Funzione PropVariantToDoubleVectorAlloc (propvarutil.h)
Estrae i dati da una struttura PROPVARIANT in un vettore double appena allocato.
Sintassi
PSSTDAPI PropVariantToDoubleVectorAlloc(
[in] REFPROPVARIANT propvar,
[out] DOUBLE **pprgn,
[out] ULONG *pcElem
);
Parametri
[in] propvar
Tipo: REFPROPVARIANT
Riferimento a una struttura PROPVARIANT di origine.
[out] pprgn
Tipo: DOUBLE**
Quando questa funzione viene restituita, contiene un puntatore a un vettore di valori double estratti dalla struttura PROPVARIANT di origine.
[out] pcElem
Tipo: ULONG*
Quando questa funzione viene restituita, contiene il numero di elementi double estratti dalla struttura PROPVARIANT di origine.
Valore restituito
Tipo: HRESULT
Se questa funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .
Commenti
Questa funzione helper viene usata in posizioni in cui l'applicazione chiamante prevede che un PROPVARIANT contenga un valore vettore double.
Se l'origine PROPVARIANT ha tipo VT_VECTOR | VT_R8 o VT_ARRAY | VT_R8, questa funzione estrae un vettore di valori double in un vettore appena allocato di valori DOUBLE. L'applicazione chiamante è responsabile dell'uso di CoTaskMemFree per rilasciare il vettore a cui punta pprgn quando non è più necessario.
Esempio
Nell'esempio seguente, da includere come parte di un programma più ampio, viene illustrato come usare PropVariantToDoubleVector per accedere a un valore vettore double in un PROPVARIANT.
// IPropertyStore *ppropstore;
// Assume variable ppropstore is initialized and valid
PROPVARIANT propvar = {0};
HRESULT hr = ppropstore->GetValue(PKEY_GPS_DestLongitude, &propvar);
if (SUCCEEDED(hr))
{
// PKEY_GPS_DestLongitude is expected to produce a VT_VECTOR | VT_R8 with three values, or VT_EMPTY
// PropVariantToDoubleVectorAlloc will return an error for VT_EMPTY
DOUBLE *rgLongitude;
ULONG cElem;
hr = PropVariantToDoubleVectorAlloc(propvar, &rgLongitude, &cElem);
if (SUCCEEDED(hr))
{
if (cElem == 3)
{
// rgLongitude contains 3 doubles representing the degrees, minutes, and seconds of longitude
}
CoTaskMemFree(rgLongitude);
}
else
{
// propvar either is VT_EMPTY, or contains something other than a vector of doubles
}
PropVariantClear(&propvar);
}
Requisiti
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 |