Partager via


Fonction PropVariantToDoubleVector (propvarutil.h)

Extrait un vecteur de doubles d’une structure PROPVARIANT .

Syntaxe

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

Paramètres

[in] propvar

Type : REFPROPVARIANT

Référence à une structure PROPVARIANT source.

[out] prgn

Type : DOUBLE*

Pointe vers une mémoire tampon contenant des valeurs crgn DOUBLE. Lorsque cette fonction retourne, la mémoire tampon a été initialisée avec des éléments doubles pcElem extraits de la structure PROPVARIANT source.

[in] crgn

Type : ULONG

Taille dans les éléments de la mémoire tampon pointée vers prgn.

[out] pcElem

Type : ULONG*

Lorsque cette fonction retourne, contient le nombre d’éléments doubles extraits de la structure PROPVARIANT source.

Valeur retournée

Type : HRESULT

Si cette fonction réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.

Remarques

Cette fonction d’assistance est utilisée dans les endroits où l’application appelante s’attend à ce qu’un PROPVARIANT contienne une valeur vectorielle double avec un nombre fixe d’éléments.

Si la source PROPVARIANT a le type VT_VECTOR | VT_R8 ou VT_ARRAY | VT_R8, cette fonction d’assistance extrait jusqu’à crgn des valeurs doubles et les place dans la mémoire tampon pointée par prgn. Si PROPVARIANT contient plus d’éléments que ne le fera la mémoire tampon prgn , cette fonction retourne une erreur et définit pcElem sur 0.

Exemples

// 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);
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP avec SP2, Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 avec SP1 [applications de bureau uniquement]
Plateforme cible Windows
En-tête propvarutil.h
Bibliothèque Propsys.lib
DLL Propsys.dll (version 6.0 ou ultérieure)
Composant redistribuable Windows Desktop Search (WDS) 3.0

Voir aussi

InitPropVariantFromDoubleVector

PropVariantGetDoubleElem

PropVariantToDouble

PropVariantToDoubleVectorAlloc

VariantToDoubleArray