PropVariantToBuffer 함수(propvarutil.h)
VT_VECTOR 형식의 PROPVARIANT 구조에서 버퍼 값을 추출합니다. | VT_UI1 또는 VT_ARRRAY | VT_UI1.
구문
PSSTDAPI PropVariantToBuffer(
[in] REFPROPVARIANT propvar,
[out] void *pv,
[in] UINT cb
);
매개 변수
[in] propvar
형식: REFPROPVARIANT
원본 PROPVARIANT 구조체입니다 .
[out] pv
형식: VOID*
길이 cb 바이트의 버퍼에 대한 포인터입니다. 이 함수가 반환될 때 추출된 버퍼 값의 첫 번째 cb 바이트를 포함합니다.
[in] cb
형식: UINT
버퍼 길이(바이트)입니다.
반환 값
형식: HRESULT
이 함수는 이러한 값 중 하나를 반환할 수 있습니다.
반환 코드 | Description |
---|---|
|
성공하면 이고, 그렇지 않으면 오류 값입니다. |
|
PROPVARIANT가 잘못된 형식이었습니다. |
|
PROPVARIANT 값은 cb 바이트보다 적습니다. |
설명
이 함수는 호출 애플리케이션에서PROPVARIANT 가 버퍼 값을 보유해야 하는 위치에서 사용됩니다. 호출하는 애플리케이션은 이 함수를 호출하기 전에 값의 예상 길이가 검사 합니다.
원본 PROPVARIANT 에 VT_VECTOR 형식이 있는 경우 | VT_UI1 또는 VT_ARRAY | VT_UI1 이 함수는 값에서 첫 번째 cb 바이트를 추출하고 pv가 가리키는 버퍼에 배치합니다. 값이 cb 바이트보다 작으면 PropVariantToBuffer 가 실패하고 버퍼가 수정되지 않습니다. 값이 cb 바이트보다 많은 경우 PropVariantToBuffer 가 성공하고 값을 자립니다.
예제
더 큰 프로그램의 일부로 포함할 다음 예제에서는 PropVariantToBuffer를 사용하여 PROPVARIANT에 저장된 구조체에 액세스하는 방법을 보여 줍니다.
// IPropertyStore *ppropstore;
// Assume variable ppropstore is initialized and valid
PROPVARIANT propvar = {0};
HRESULT hr = ppropstore->GetValue(PKEY_FindData, &propvar);
if (SUCCEEDED(hr))
{
// PKEY_FindData is expected to produce a VT_VECTOR | VT_UI1 with sizeof(WIN32_FIND_DATAW) bytes
// We need to verify that the value length is acceptable before calling PropVariantToBuffer
hr = E_UNEXPECTED;
if (PropVariantGetElementCount(propvar) == sizeof(WIN32_FIND_DATAW))
{
WIN32_FIND_DATAW wfd;
hr = PropVariantToBuffer(propvar, &wfd, sizeof(wfd));
if (SUCCEEDED(hr))
{
// wfd is now initialized
}
}
PropVariantClear(&propvar);
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | WINDOWS XP SP2, Windows Vista [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 SP1 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | propvarutil.h |
라이브러리 | Propsys.lib |
DLL | Propsys.dll(버전 6.0 이상) |
재배포 가능 파일 | WDS(Windows 데스크톱 검색) 3.0 |