Bagikan melalui


Fungsi PropVariantToDoubleVectorAlloc (propvarutil.h)

Mengekstrak data dari struktur PROPVARIANT ke vektor ganda yang baru dialokasikan.

Sintaks

PSSTDAPI PropVariantToDoubleVectorAlloc(
  [in]  REFPROPVARIANT propvar,
  [out] DOUBLE         **pprgn,
  [out] ULONG          *pcElem
);

Parameter

[in] propvar

Jenis: REFPROPVARIANT

Referensi ke struktur PROPVARIANT sumber.

[out] pprgn

Jenis: DOUBLE**

Ketika fungsi ini kembali, berisi penunjuk ke vektor nilai ganda yang diekstrak dari struktur PROPVARIANT sumber.

[out] pcElem

Jenis: ULONG*

Ketika fungsi ini kembali, berisi jumlah elemen ganda yang diekstrak dari struktur PROPVARIANT sumber.

Menampilkan nilai

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 vektor ganda.

Jika PROPVARIANT sumber memiliki jenis VT_VECTOR | VT_R8 atau VT_ARRAY | VT_R8, fungsi ini mengekstrak vektor nilai ganda ke dalam vektor nilai DOUBLE yang baru dialokasikan. Aplikasi panggilan bertanggung jawab untuk menggunakan CoTaskMemFree untuk merilis vektor yang ditunjukkan oleh pprgn ketika tidak lagi diperlukan.

Contoh

Contoh berikut, untuk disertakan sebagai bagian dari program yang lebih besar, menunjukkan cara menggunakan PropVariantToDoubleVector untuk mengakses nilai vektor ganda dalam PROPVARIANT.

// IPropertyStore *ppropstore;
// Assume variable ppropstore is initialized and valid
PROPVARIANT propvar = {0};
HRESULT hr = ppropstore->GetValue(PKEY_GPS_DestLongitude, &propvar);
if (SUCCEEDED(hr))
{
     // PKEY_GPS_DestLongitude is expected to produce a VT_VECTOR | VT_R8 with three values, or VT_EMPTY
     // PropVariantToDoubleVectorAlloc will return an error for VT_EMPTY
     DOUBLE *rgLongitude;
     ULONG cElem;
     hr = PropVariantToDoubleVectorAlloc(propvar, &rgLongitude, &cElem);
     if (SUCCEEDED(hr))
     {
         if (cElem == 3)
         {
              // rgLongitude contains 3 doubles representing the degrees, minutes, and seconds of longitude
         }
         CoTaskMemFree(rgLongitude);
     }
     else
     {
          // propvar either is VT_EMPTY, or contains something other than a vector of  doubles
     }
     PropVariantClear(&propvar);
}

Persyaratan

   
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

InitPropVariantFromDoubleVector

PropVariantGetDoubleElem

PropVariantToDouble

PropVariantToDoubleVector

VariantToDoubleArray