Compartir a través de


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
S_OK
Si se ejecuta correctamente o un valor de error de lo contrario.
E_INVALIDARG
ElPROPVARIANT era del tipo incorrecto.
E_FAIL
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

Consulte también

InitPropVariantFromBuffer

VariantToBuffer