Compartir a través de


Función VariantToBuffer (propvarutil.h)

Extrae el contenido de un búfer almacenado en una estructura VARIANT de tipo VT_ARRRAY | VT_UI1.

Sintaxis

PSSTDAPI VariantToBuffer(
  [in]  REFVARIANT varIn,
  [out] void       *pv,
  [in]  UINT       cb
);

Parámetros

[in] varIn

Tipo: REFVARIANT

Referencia a una estructura VARIANT 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

Tamaño del búfer pv , en bytes. El búfer debe tener el mismo tamaño que los datos que se van a extraer o más pequeños.

Valor devuelto

Tipo: HRESULT

Devuelve uno de los valores siguientes:

Código devuelto Descripción
S_OK
Datos extraídos correctamente.
E_INVALIDARG
Variant no era de tipo VT_ARRRAY | VT_UI1.
E_FAIL
El valor del búfer VARIANT tenía menos de bytes cb .

Comentarios

Esta función se usa cuando la aplicación que realiza la llamada espera que variant contenga un valor de búfer. La aplicación que realiza la llamada debe comprobar que el valor tiene la longitud esperada antes de llamar a esta función.

Si el tipo VARIANT de origen tiene VT_ARRAY | VT_UI1, esta función extrae los primeros bytes cb de la estructura y los coloca en el búfer al que apunta pv.

Si el valor almacenado tiene menos de bytes cb , Se produce un error en VariantToBuffer y el búfer no se modifica.

Si el valor tiene más de bytes cb , VariantToBuffer se realiza correctamente y trunca el valor.

Ejemplos

En el ejemplo siguiente, para incluirse como parte de un programa mayor, se muestra cómo usar VariantToBuffer para tener acceso a una estructura que se ha almacenado en variant.

// VARIANT var;
// Assume variable var is initialized and valid. 
// The application expects var to hold a WIN32_FIND_DATAW structure 
// with sizeof(WIN32_FIND_DATAW) bytes.

HRESULT hr = E_UNEXPECTED;

// Verify that the value length is acceptable before you call VariantToBuffer.
if (VariantGetElementCount(var) == sizeof(WIN32_FIND_DATAW))
{
    WIN32_FIND_DATAW wfd;

    hr = VariantToBuffer(var, &wfd, sizeof(wfd));

    if (SUCCEEDED(hr))
    {
        // wfd is now initialized.
    }
}

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

InitVariantFromBuffer

PropVariantToBuffer