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 |
---|---|
|
Se tiver êxito, caso contrário, um valor de erro. |
|
OPROPVARIANT era do tipo errado. |
|
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 |