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 |