Compartilhar via


Função PropVariantToBuffer (propvarutil.h)

Extrai o valor do buffer de uma estrutura PROPVARIANT do tipo VT_VECTOR | VT_UI1 ou VT_ARRRAY | VT_UI1.

Sintaxe

PSSTDAPI PropVariantToBuffer(
  [in]  REFPROPVARIANT propvar,
  [out] void           *pv,
  [in]  UINT           cb
);

Parâmetros

[in] propvar

Tipo: REFPROPVARIANT

A estrutura PROPVARIANT de origem .

[out] pv

Tipo: VOID*

Ponteiro para um buffer de comprimento cb bytes. Quando essa função retorna, contém os primeiros bytes cb do valor do buffer extraído.

[in] cb

Tipo: UINT

O comprimento do buffer, em bytes.

Retornar valor

Tipo: HRESULT

Essa função pode retornar um desses valores.

Código de retorno Descrição
S_OK
Se tiver êxito, caso contrário, um valor de erro.
E_INVALIDARG
OPROPVARIANT era do tipo errado.
E_FAIL
O valorPROPVARIANT tinha menos de cb bytes.

Comentários

Essa função é usada em locais em que o aplicativo de chamada espera que umPROPVARIANT mantenha um valor de buffer. O aplicativo de chamada deve marcar que o valor tenha o comprimento esperado antes de chamar essa função.

Se o PROPVARIANT de origem tiver o tipo VT_VECTOR | VT_UI1 ou VT_ARRAY | VT_UI1, essa função extrai os primeiros bytes cb do valor e os coloca no buffer apontado por pv. Se o valor tiver menos de cb bytes, PropVariantToBuffer falhará e o buffer não será modificado. Se o valor tiver mais de bytes cb , PropVariantToBuffer terá êxito e truncará o valor.

Exemplos

O exemplo a seguir, a ser incluído como parte de um programa maior, demonstra como usar PropVariantToBuffer para acessar uma estrutura que foi armazenada em um 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);
}

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP com SP2, Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 com SP1 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho propvarutil.h
Biblioteca Propsys.lib
DLL Propsys.dll (versão 6.0 ou posterior)
Redistribuível Pesquisa da Área de Trabalho do Windows (WDS) 3.0

Confira também

InitPropVariantFromBuffer

VariantToBuffer