PropVariantToDoubleVector-Funktion (propvarutil.h)
Extrahiert einen Vektor von Doubles aus einer PROPVARIANT-Struktur .
Syntax
PSSTDAPI PropVariantToDoubleVector(
[in] REFPROPVARIANT propvar,
[out] DOUBLE *prgn,
[in] ULONG crgn,
[out] ULONG *pcElem
);
Parameter
[in] propvar
Typ: REFPROPVARIANT
Verweis auf eine PROPVARIANT-Quellstruktur .
[out] prgn
Typ: DOUBLE*
Zeigt auf einen Puffer mit crgn DOUBLE-Werten. Wenn diese Funktion zurückgibt, wurde der Puffer mit pcElem Double-Elementen initialisiert, die aus der PROPVARIANT-Quellstruktur extrahiert wurden.
[in] crgn
Typ: ULONG
Größe in Elementen des Puffers, auf die von prgn verwiesen wird.
[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 für einen doppelten Vektor mit einer festen Anzahl von Elementen enthält.
Wenn die Quelle PROPVARIANT den Typ VT_VECTOR | VT_R8 oder VT_ARRAY | VT_R8 extrahiert diese Hilfsfunktion bis zu crgn Double-Werte und platziert sie in den Puffer, auf den prgn verweist. Wenn propvariant mehr Elemente enthält, als in den prgn-Puffer passen, gibt diese Funktion einen Fehler zurück und legt pcElem auf 0 fest.
Beispiele
// 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);
}
Anforderungen
Anforderung | Wert |
---|---|
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