PropVariantChangeType-Funktion (propvarutil.h)
Wandelt einen wert, der als PROPVARIANT-Struktur gespeichert ist, in einen äquivalenten Wert eines anderen Variantentyps um.
Syntax
PSSTDAPI PropVariantChangeType(
[out] PROPVARIANT *ppropvarDest,
[in] REFPROPVARIANT propvarSrc,
[in] PROPVAR_CHANGE_FLAGS flags,
[in] VARTYPE vt
);
Parameter
[out] ppropvarDest
Typ: PROPVARIANT*
Ein Zeiger auf eine PROPVARIANT-Struktur , die nach erfolgreicher Rückgabe dieser Funktion den koercierten Wert und den neuen Typ empfängt.
[in] propvarSrc
Typ: REFPROPVARIANT
Ein Verweis auf die PROPVARIANT-Quellstruktur , die den Wert enthält, der als ursprünglicher Typ ausgedrückt wird.
[in] flags
Typ: PROPVAR_CHANGE_FLAGS
Reserviert, muss 0 sein.
[in] vt
Typ: VARTYPE
Gibt den neuen Typ für den Wert an. In den folgenden Tabellen finden Sie erkannte Typnamen.
Rückgabewert
Typ: HRESULT
Gibt bei erfolgreicher Ausführung S_OK oder andernfalls einen COM-Standardfehlerwert zurück. Wenn die angeforderte Nötigung nicht möglich ist, wird ein Fehler zurückgegeben.
Hinweise
Beachten Sie, dass es sich bei den PROPVARIANT-Quell - und Zielstrukturen um separate Strukturen handeln muss. Sie können die PROPVARIANT-Quelldaten nicht mit den neuen Zieldaten überschreiben. Der Versuch, dies zu tun, führt zu einem Fehler.
PropVariantChangeType konvertiert Werte wie folgt zwischen den folgenden Typen. Zahlen beziehen sich auf Bedingungen, die nach den Tabellen erläutert werden.
VT_LPWSTR | VT_BSTR | VT_BOOL | VT_FILETIME | VT_DATE | VT_CLSID | |
---|---|---|---|---|---|---|
VT_LPWSTR | Yes | Yes | Ja | Ja (2) | Ja (2) | Yes |
VT_BSTR | Yes | Yes | Ja | Ja (2) | Ja (2) | Yes |
VT_BOOL | Yes | Yes | Ja | Nein | No | No |
VT_I2 | Yes | Yes | Ja | Nein | No | No |
VT_I4 | Yes | Yes | Ja | Nein | No | No |
VT_I8 | Yes | Yes | Ja | Nein | No | No |
VT_UI2 | Yes | Yes | Ja | Nein | No | No |
VT_UI4 | Yes | Yes | Ja | Nein | No | No |
VT_UI8 | Yes | Yes | Ja | Nein | No | No |
VT_R8 | Ja (3) | Ja (3) | Ja | Nein | No | No |
VT_FILETIME | Ja (2) | Ja (2) | Nein | Ja | Ja | Nein |
VT_DATE | Ja (2) | Ja (2) | Nein | Ja | Ja | Nein |
VT_CLSID | Yes | Ja | Nein | No | Nein | Ja |
VT_I2 | VT_I4 | VT_I8 | VT_UI2 | VT_UI4 | VT_UI8 | VT_R8 | |
---|---|---|---|---|---|---|---|
VT_LPWSTR | Yes | Yes | Yes | Yes | Yes | Yes | Ja (3) |
VT_BSTR | Yes | Yes | Yes | Yes | Yes | Yes | Ja (3) |
VT_BOOL | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
VT_I2 | Yes | Yes | Ja | Ja (1) | Ja (1) | Ja (1) | Ja (1) |
VT_I4 | Ja (1) | Yes | Ja | Ja (1) | Ja (1) | Ja (1) | Ja (1) |
VT_I8 | Ja (1) | Ja (1) | Ja | Ja (1) | Ja (1) | Ja (1) | Ja (1) |
VT_UI2 | Ja (1) | Yes | Yes | Yes | Yes | Ja | Ja (1) |
VT_UI4 | Ja (1) | Ja (1) | Ja | Ja (1) | Yes | Ja | Ja (1) |
VT_UI8 | Ja (1) | Ja (1) | Ja (1) | Ja (1) | Ja (1) | Ja | Ja (1) |
VT_R8 | Ja (1) | Ja (1) | Ja (1) | Ja (1) | Ja (1) | Ja (1) | Yes |
VT_FILETIME | No | No | No | No | No | No | No |
VT_DATE | No | No | No | No | No | No | No |
VT_CLSID | No | No | No | No | No | No | No |
Bedingungen
- Beim Konvertieren zwischen numerischen Typen schlagen Konvertierungen außerhalb des Bereichs fehl. Für instance ein negativer Vorzeichenwert für einen typ ohne Vorzeichen oder ein Wert ohne Vorzeichen mit 4 Byte größer als 65535 für einen 2-Byte-Typ ohne Vorzeichen.
- Beim Konvertieren zwischen Zeichenfolgen und Datumsangaben wird anstelle einer lokalisierten oder "menschenlesbaren" Darstellung ein kanonisches Zeichenfolgenformular verwendet. Das Format lautet "jjjj/mm/tt:hh:mm:ss.fff" (Jahr, Monat, Datum, Stunden, Minuten, Sekunden, Millisekunden). Beachten Sie, dass dies eine geringere Genauigkeit ist, als vom FILETIME-Typ unterstützt wird, aber für die meisten Zwecke ausreichend sein sollte.
- Beim Konvertieren zwischen Gleitkommazahlen und Zeichenfolgen wird das Dezimaltrennzeichen des aktuellen Gebietsschemas verwendet. Beachten Sie, dass dies Probleme verursachen kann, wenn diese Werte in Dateien gespeichert werden, die zwischen verschiedenen Gebietsschemas verschoben werden.
Die Coercion zwischen Typen erfolgt ohne Rücksicht auf eigenschaftsspezifische Informationen. Eigenschaftenspezifische Coercions sollten mit PSCoerceToCanonicalValue ausgeführt werden. Wenn die Zeichenfolgenform eines Werts für Benutzeroberflächenzwecke erforderlich ist, sollte PSFormatForDisplay außerdem verwendet werden, um den Wert gemäß gebietsschema- und eigenschaftsspezifischen Informationen zu formatieren, anstatt PropVariantChangeType zu verwenden, um den Wert in eine Zeichenfolge zu übertragen.
Beispiele
Im folgenden Codebeispiel, das als Teil eines größeren Programms eingeschlossen werden soll, wird veranschaulicht, wie PropVariantChangeType verwendet wird, um einen VT_FILETIME Wert aus einer Zeichenfolge zu initialisieren.
PROPVARIANT propvarString = {0};
HRESULT hr = InitPropVariantFromString(L"2007/01/30:12:00:00.000", &propvarString);
if (SUCCEEDED(hr))
{
PROPVARIANT propvarFiletime = {0};
hr = PropVariantChangeType(&propvarFiletime, propvarString, 0, VT_FILETIME);
if (SUCCEEDED(hr))
{
// propvarFiletime now contains the FILETIME representation
// of 1/30/2007 12:00 PM
PropVariantClear(&propvarFiletime);
}
PropVariantClear(&propvarString);
}
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 |