Condividi tramite


Funzione VariantToBuffer (propvarutil.h)

Estrae il contenuto di un buffer archiviato in una struttura VARIANT di tipo VT_ARRRAY | VT_UI1.

Sintassi

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

Parametri

[in] varIn

Tipo: REFVARIANT

Riferimento a una struttura VARIANT di origine.

[out] pv

Tipo: VOID*

Puntatore a un buffer di byte cb di lunghezza. Quando questa funzione restituisce, contiene i primi byte cb del valore del buffer estratto.

[in] cb

Tipo: UINT

Dimensioni del buffer pv , in byte. Il buffer deve essere la stessa dimensione dei dati da estrarre o di dimensioni inferiori.

Valore restituito

Tipo: HRESULT

Restituisce uno dei valori seguenti:

Codice restituito Descrizione
S_OK
Dati estratti correttamente.
E_INVALIDARG
VARIANT non era di tipo VT_ARRRAY | VT_UI1.
E_FAIL
Il valore del buffer VARIANT ha meno di cb byte.

Commenti

Questa funzione viene usata quando l'applicazione chiamante prevede che un valore VARIANT contenga un valore del buffer. L'applicazione chiamante deve verificare che il valore abbia la lunghezza prevista prima di chiamare questa funzione.

Se l'origine VARIANT ha tipo VT_ARRAY | VT_UI1, questa funzione estrae i primi byte cb dalla struttura e li inserisce nel buffer a cui punta da pv.

Se il valore archiviato ha meno di cb bytes, VariantToBuffer ha esito negativo e il buffer non viene modificato.

Se il valore ha più di cb byte, VariantToBuffer riesce e tronca il valore.

Esempio

Nell'esempio seguente, da includere come parte di un programma più grande, viene illustrato come usare VariantToBuffer per accedere a una struttura archiviata in una VARIANTE.

// 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.
    }
}

Requisiti

Requisito Valore
Client minimo supportato Windows XP con SP2, Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2003 con SP1 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione propvarutil.h
Libreria Propsys.lib
DLL Propsys.dll (versione 6.0 o successiva)
Componente ridistribuibile Windows Desktop Search (WDS) 3.0

Vedi anche

InitVariantFromBuffer

PropVariantToBuffer