Bagikan melalui


Fungsi PropVariantToStringAlloc (propvarutil.h)

Mengekstrak nilai properti string dari struktur PROPVARIANT .

Sintaks

PSSTDAPI PropVariantToStringAlloc(
  [in]  REFPROPVARIANT propvar,
  [out] PWSTR          *ppszOut
);

Parameter

[in] propvar

Jenis: REFPROPVARIANT

Referensi ke struktur PROPVARIANT sumber.

[out] ppszOut

Jenis: PWSTR*

Ketika fungsi ini kembali, berisi penunjuk ke nilai properti yang diekstrak jika ada.

Nilai kembali

Jenis: HRESULT

Jika fungsi ini berhasil, fungsi akan mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan.

Keterangan

Fungsi pembantu ini digunakan di tempat-tempat di mana aplikasi panggilan mengharapkan PROPVARIANT untuk menyimpan nilai string.

Jika PROPVARIANT sumber memiliki jenis VT_LPWSTR atau VT_BSTR, fungsi ini mengekstrak string ke dalam buffer yang baru dialokasikan. Jika tidak, ia mencoba mengonversi nilai dalam struktur PROPVARIANT menjadi string. Jika konversi tidak memungkinkan, PropVariantToStringAlloc akan mengembalikan kode kegagalan dan mengatur ppszOut ke NULL. Lihat PropVariantChangeType untuk daftar kemungkinan konversi. Dari catatan, VT_EMPTY berhasil dikonversi ke buffer yang dialokasikan yang berisi "".

Aplikasi panggilan bertanggung jawab untuk menggunakan CoTaskMemFree untuk merilis string yang ditujukkan oleh ppszOut ketika tidak lagi diperlukan.

Selain konversi yang disediakan oleh PropVariantChangeType, kasus khusus berikut berlaku untuk PropVariantToStringAlloc.

  • PROPVARIANTs bernilai vektor dikonversi menjadi string dengan memisahkan setiap elemen dengan menggunakan "; ". Misalnya, PropVariantToStringAlloc mengonversi vektor 3 bilangan bulat, {3, 1, 4}, ke string "3; 1; 4". Titik koma tidak bergantung pada lokal saat ini.
  • nilai VT_BLOB, VT_STREAM, VT_STREAMED_OBJECT, dan VT_UNKNOWN dikonversi ke string menggunakan pengodean yang tidak didukung. Tidak dimungkinkan untuk mendekode string yang dibuat dengan cara ini dan formatnya dapat berubah di masa mendatang.

Contoh

// IPropertyStore *ppropstore;

// Assume variable ppropstore is initialized and valid

PROPVARIANT propvar = {0};

HRESULT hr = ppropstore->GetValue(PKEY_Title, &propvar);

if (SUCCEEDED(hr))

{

    // PKEY_Title is expected to produce a VT_LPWSTR or VT_EMPTY value.

    // PropVariantToStringAlloc will convert VT_EMPTY to "".

    LPWSTR pszTitle;

    hr = PropVariantToString(propvar, &pszTitle);

    if (SUCCEEDED(hr))

    {

        // pszTitle is now valid

    }

    else

    {

        // pszTitle is always NULL

    }

    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

InitPropVariantFromString

PropVariantChangeType

PropVariantToString

PropVariantToStringVector

VariantToString