다음을 통해 공유


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
S_OK
성공하면 이고, 그렇지 않으면 오류 값입니다.
E_INVALIDARG
PROPVARIANT가 잘못된 형식이었습니다.
E_FAIL
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

추가 정보

InitPropVariantFromBuffer

VariantToBuffer