Condividi tramite


Funzione PropVariantToDoubleVector (propvarutil.h)

Estrae un vettore di double da una struttura PROPVARIANT .

Sintassi

PSSTDAPI PropVariantToDoubleVector(
  [in]  REFPROPVARIANT propvar,
  [out] DOUBLE         *prgn,
  [in]  ULONG          crgn,
  [out] ULONG          *pcElem
);

Parametri

[in] propvar

Tipo: REFPROPVARIANT

Riferimento a una struttura PROPVARIANT di origine.

[out] prgn

Tipo: DOUBLE*

Punta a un buffer contenente valori DOUBLE crgn . Al termine di questa funzione, il buffer è stato inizializzato con elementi double pcElem estratti dalla struttura PROPVARIANT di origine.

[in] crgn

Tipo: ULONG

Dimensioni negli elementi del buffer a cui punta prgn.

[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 con un numero fisso di elementi.

Se l'origine PROPVARIANT ha tipo VT_VECTOR | VT_R8 o VT_ARRAY | VT_R8, questa funzione helper estrae fino a valori double crgn e li inserisce nel buffer a cui punta prgn. Se PROPVARIANT contiene più elementi di quelli che verranno inseriti nel buffer prgn , questa funzione restituisce un errore e imposta pcElem su 0.

Esempio

// 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
         // PropVariantToDoubleVector will return an error for VT_EMPTY
         DOUBLE rgLongitude[3];
         ULONG cElem;
         hr = PropVariantToDoubleVector(propvar, &rgLongitude, ARRAYSIZE(rgLongitude), &cElem);
         if (SUCCEEDED(hr))
         {
                 if (cElem == ARRAYSIZE(rgLongitude))
                 {
                          // rgLongitude contains 3 doubles representing the degrees, minutes, and seconds of longitude
                 }
                 else
                 {
                          // The first cElem doubles from propvar are stored in the first 3 elements of rgLongitude
         }
         else
         {
                 // propvar either is VT_EMPTY, or contains something other than a vector of 3 doubles
         }
         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

InitPropVariantFromDoubleVector

PropVariantGetDoubleElem

PropVariantToDouble

PropVariantToDoubleVectorAlloc

VariantToDoubleArray