Función PropVariantToBuffer (propvarutil.h)
Extrae el valor del búfer de una estructura PROPVARIANT de tipo VT_VECTOR | VT_UI1 o VT_ARRRAY | VT_UI1.
Sintaxis
PSSTDAPI PropVariantToBuffer(
[in] REFPROPVARIANT propvar,
[out] void *pv,
[in] UINT cb
);
Parámetros
[in] propvar
Tipo: REFPROPVARIANT
Estructura PROPVARIANT de origen.
[out] pv
Tipo: VOID*
Puntero a un búfer de longitud cb bytes. Cuando esta función vuelve, contiene los primeros bytes cb del valor de búfer extraído.
[in] cb
Tipo: UINT
Longitud del búfer, en bytes.
Valor devuelto
Tipo: HRESULT
Esta función puede devolver uno de estos valores.
Código devuelto | Descripción |
---|---|
|
Si se ejecuta correctamente o un valor de error de lo contrario. |
|
ElPROPVARIANT era del tipo incorrecto. |
|
El valorPROPVARIANT tenía menos de bytes cb . |
Comentarios
Esta función se usa en lugares donde la aplicación que realiza la llamada espera que unPROPVARIANT contenga un valor de búfer. La aplicación que llama debe comprobar que el valor tiene la longitud esperada antes de llamar a esta función.
Si el PROPVARIANT de origen tiene VT_VECTOR de tipo | VT_UI1 o VT_ARRAY | VT_UI1, esta función extrae los primeros bytes cb del valor y los coloca en el búfer al que apunta pv. Si el valor tiene menos de bytes cb , se produce un error en PropVariantToBuffer y el búfer no se modifica. Si el valor tiene más de bytes cb , PropVariantToBuffer se realiza correctamente y trunca el valor.
Ejemplos
En el ejemplo siguiente, para incluirse como parte de un programa más grande, se muestra cómo usar PropVariantToBuffer para tener acceso a una estructura almacenada en un 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 | Value |
---|---|
Cliente mínimo compatible | Windows XP con SP2, Windows Vista [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 con SP1 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | propvarutil.h |
Library | Propsys.lib |
Archivo DLL | Propsys.dll (versión 6.0 o posterior) |
Redistribuible | Windows Desktop Search (WDS) 3.0 |