Partager via


Fonction PropVariantToDoubleVectorAlloc (propvarutil.h)

Extrait des données d’une structure PROPVARIANT dans un vecteur double nouvellement alloué.

Syntaxe

PSSTDAPI PropVariantToDoubleVectorAlloc(
  [in]  REFPROPVARIANT propvar,
  [out] DOUBLE         **pprgn,
  [out] ULONG          *pcElem
);

Paramètres

[in] propvar

Type : REFPROPVARIANT

Référence à une structure PROPVARIANT source.

[out] pprgn

Type : DOUBLE**

Lorsque cette fonction est retournée, contient un pointeur vers un vecteur de valeurs doubles extraites de la structure PROPVARIANT source.

[out] pcElem

Type : ULONG*

Lorsque cette fonction est retournée, 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.

Notes

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

Si la source PROPVARIANT a le type VT_VECTOR | VT_R8 ou VT_ARRAY | VT_R8, cette fonction extrait un vecteur de valeurs doubles dans un vecteur de valeurs DOUBLE nouvellement alloué. L’application appelante est responsable de l’utilisation de CoTaskMemFree pour libérer le vecteur pointé par pprgn lorsqu’il n’est plus nécessaire.

Exemples

L’exemple suivant, à inclure dans le cadre d’un programme plus large, montre comment utiliser PropVariantToDoubleVector pour accéder à une valeur de vecteur double dans 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);
}

Spécifications

   
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

PropVariantToDoubleVector

VariantToDoubleArray