Condividi tramite


Funzione PropVariantToBuffer (propvarutil.h)

Estrae il valore del buffer da una struttura PROPVARIANT di tipo VT_VECTOR | VT_UI1 o VT_ARRRAY | VT_UI1.

Sintassi

PSSTDAPI PropVariantToBuffer(
  [in]  REFPROPVARIANT propvar,
  [out] void           *pv,
  [in]  UINT           cb
);

Parametri

[in] propvar

Tipo: REFPROPVARIANT

Struttura PROPVARIANT di origine.

[out] pv

Tipo: VOID*

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

[in] cb

Tipo: UINT

Lunghezza del buffer, in byte.

Valore restituito

Tipo: HRESULT

Questa funzione può restituire uno di questi valori.

Codice restituito Descrizione
S_OK
Se ha esito positivo o un valore di errore in caso contrario.
E_INVALIDARG
PropVARIANT era di tipo errato.
E_FAIL
Il valorePROPVARIANT ha un numero inferiore di byte cb .

Commenti

Questa funzione viene usata nelle posizioni in cui l'applicazione chiamante prevede che unPROPVARIANT 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 PROPVARIANT ha tipo VT_VECTOR | VT_UI1 o VT_ARRAY | VT_UI1, questa funzione estrae i primi byte cb dal valore e li inserisce nel buffer a cui punta pv. Se il valore ha meno di cb bytes, PropVariantToBuffer ha esito negativo e il buffer non viene modificato. Se il valore ha più di cb bytes, PropVariantToBuffer ha esito positivo e tronca il valore.

Esempio

Nell'esempio seguente, da includere come parte di un programma più ampio, viene illustrato come usare PropVariantToBuffer per accedere a una struttura archiviata in 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);
}

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

InitPropVariantFromBuffer

VariantToBuffer