Freigeben über


PropVariantToDoubleVectorAlloc-Funktion (propvarutil.h)

Extrahiert Daten aus einer PROPVARIANT-Struktur in einen neu zugeordneten Doppelvektor.

Syntax

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

Parameter

[in] propvar

Typ: REFPROPVARIANT

Verweis auf eine PROPVARIANT-Quellstruktur .

[out] pprgn

Typ: DOUBLE**

Wenn diese Funktion zurückgibt, enthält einen Zeiger auf einen Vektor mit doppelten Werten, die aus der PROPVARIANT-Quellstruktur extrahiert wurden.

[out] pcElem

Typ: ULONG*

Wenn diese Funktion zurückgibt, enthält die Anzahl der doppelten Elemente, die aus der Quellstruktur PROPVARIANT extrahiert wurden.

Rückgabewert

Typ: HRESULT

Wenn diese Funktion erfolgreich ist, gibt sie S_OK zurück. Andernfalls wird ein Fehlercode HRESULT zurückgegeben.

Hinweise

Diese Hilfsfunktion wird an Stellen verwendet, an denen die aufrufende Anwendung erwartet, dass eine PROPVARIANT einen Wert mit doppeltem Vektor enthält.

Wenn die Quelle PROPVARIANT den Typ VT_VECTOR | VT_R8 oder VT_ARRAY | VT_R8 extrahiert diese Funktion einen Vektor von Doppelwerten in einen neu zugeordneten Vektor von DOUBLE-Werten. Die aufrufende Anwendung ist für die Verwendung von CoTaskMemFree verantwortlich, um den von pprgn angezeigten Vektor freizugeben, wenn er nicht mehr benötigt wird.

Beispiele

Im folgenden Beispiel, das als Teil eines größeren Programms eingeschlossen werden soll, wird veranschaulicht, wie PropVariantToDoubleVector verwendet wird, um auf einen Wert mit doppeltem Vektor in einer PROPVARIANT zuzugreifen.

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

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP mit SP2, Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 mit SP1 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile propvarutil.h
Bibliothek Propsys.lib
DLL Propsys.dll (Version 6.0 oder höher)
Verteilbare Komponente Windows Desktop Search (WDS) 3.0

Weitere Informationen

InitPropVariantFromDoubleVector

PropVariantGetDoubleElem

PropVariantToDouble

PropVariantToDoubleVector

VariantToDoubleArray