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 |
---|---|
|
Se ha esito positivo o un valore di errore in caso contrario. |
|
PropVARIANT era di tipo errato. |
|
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 |