PropVariantToBuffer-Funktion (propvarutil.h)
Extrahiert den Pufferwert aus einer PROPVARIANT-Struktur vom Typ VT_VECTOR | VT_UI1 oder VT_ARRRAY | VT_UI1.
Syntax
PSSTDAPI PropVariantToBuffer(
[in] REFPROPVARIANT propvar,
[out] void *pv,
[in] UINT cb
);
Parameter
[in] propvar
Typ: REFPROPVARIANT
Die PROPVARIANT-Quellstruktur .
[out] pv
Typ: VOID*
Zeiger auf einen Puffer mit der Länge cb Bytes. Wenn diese Funktion zurückgibt, enthält die ersten cb Bytes des extrahierten Pufferwerts.
[in] cb
Typ: UINT
Die Pufferlänge in Bytes.
Rückgabewert
Typ: HRESULT
Diese Funktion kann einen dieser Werte zurückgeben.
Rückgabecode | BESCHREIBUNG |
---|---|
|
Wenn erfolgreich, oder andernfalls ein Fehlerwert. |
|
PropVARIANT war vom falschen Typ. |
|
DerPROPVARIANT-Wert hatte weniger als cb Bytes. |
Hinweise
Diese Funktion wird an Stellen verwendet, an denen die aufrufende Anwendung erwartet, dass einePROPVARIANT einen Pufferwert enthält. Die aufrufende Anwendung sollte überprüfen, ob der Wert die erwartete Länge hat, bevor diese Funktion aufgerufen wird.
Wenn die Quelle PROPVARIANT den Typ VT_VECTOR | VT_UI1 oder VT_ARRAY | VT_UI1 extrahiert diese Funktion die ersten cb-Bytes aus dem Wert und platziert sie im Puffer, auf den pv verweist. Wenn der Wert weniger als cb Bytes aufweist, schlägt PropVariantToBuffer fehl, und der Puffer wird nicht geändert. Wenn der Wert mehr als cb Bytes aufweist, ist PropVariantToBuffer erfolgreich und schneidet den Wert ab.
Beispiele
Im folgenden Beispiel, das als Teil eines größeren Programms eingeschlossen werden soll, wird veranschaulicht, wie PropVariantToBuffer verwendet wird, um auf eine Struktur zuzugreifen, die in einem PROPVARIANT gespeichert wurde.
// IPropertyStore *ppropstore;
// Assume variable ppropstore is initialized and valid
PROPVARIANT propvar = {0};
HRESULT hr = ppropstore->GetValue(PKEY_FindData, &propvar);
if (SUCCEEDED(hr))
{
// PKEY_FindData is expected to produce a VT_VECTOR | VT_UI1 with sizeof(WIN32_FIND_DATAW) bytes
// We need to verify that the value length is acceptable before calling PropVariantToBuffer
hr = E_UNEXPECTED;
if (PropVariantGetElementCount(propvar) == sizeof(WIN32_FIND_DATAW))
{
WIN32_FIND_DATAW wfd;
hr = PropVariantToBuffer(propvar, &wfd, sizeof(wfd));
if (SUCCEEDED(hr))
{
// wfd is now initialized
}
}
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 |