Freigeben über


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
S_OK
Wenn erfolgreich, oder andernfalls ein Fehlerwert.
E_INVALIDARG
PropVARIANT war vom falschen Typ.
E_FAIL
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

Weitere Informationen

InitPropVariantFromBuffer

VariantToBuffer