Bagikan melalui


Fungsi PropVariantToBuffer (propvarutil.h)

Mengekstrak nilai buffer dari struktur tipe PROPVARIANT VT_VECTOR | VT_UI1 atau VT_ARRRAY | VT_UI1.

Sintaks

PSSTDAPI PropVariantToBuffer(
  [in]  REFPROPVARIANT propvar,
  [out] void           *pv,
  [in]  UINT           cb
);

Parameter

[in] propvar

Jenis: REFPROPVARIANT

Struktur PROPVARIANT sumber.

[out] pv

Jenis: VOID*

Penunjuk ke buffer byte cb panjang. Ketika fungsi ini kembali, berisi byte cb pertama dari nilai buffer yang diekstrak.

[in] cb

Jenis: UINT

Panjang buffer, dalam byte.

Nilai kembali

Jenis: HRESULT

Fungsi ini dapat mengembalikan salah satu nilai ini.

Menampilkan kode Deskripsi
S_OK
Jika berhasil, atau nilai kesalahan sebaliknya.
E_INVALIDARG
PROPVARIANT adalah jenis yang salah.
E_FAIL
NilaiPROPVARIANT memiliki kurang dari byte cb .

Keterangan

Fungsi ini digunakan di tempat-tempat di mana aplikasi panggilan mengharapkanPROPVARIANT untuk menyimpan nilai buffer. Aplikasi panggilan harus memeriksa bahwa nilai memiliki panjang yang diharapkan sebelum memanggil fungsi ini.

Jika PROPVARIANT sumber memiliki jenis VT_VECTOR | VT_UI1 atau VT_ARRAY | VT_UI1, fungsi ini mengekstrak byte cb pertama dari nilai dan menempatkannya di buffer yang diacu oleh pv. Jika nilai memiliki kurang dari byte cb , maka PropVariantToBuffer gagal dan buffer tidak dimodifikasi. Jika nilai memiliki lebih dari cb byte, maka PropVariantToBuffer berhasil dan memotong nilai.

Contoh

Contoh berikut, untuk disertakan sebagai bagian dari program yang lebih besar, menunjukkan cara menggunakan PropVariantToBuffer untuk mengakses struktur yang telah disimpan dalam PROPVARIANT".

// 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);
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP dengan SP2, Windows Vista [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 dengan SP1 [hanya aplikasi desktop]
Target Platform Windows
Header propvarutil.h
Pustaka Propsys.lib
DLL Propsys.dll (versi 6.0 atau yang lebih baru)
Redistribusi Windows Desktop Search (WDS) 3.0

Lihat juga

InitPropVariantFromBuffer

VariantToBuffer