Bagikan melalui


Fungsi VariantCopy (oleauto.h)

Membebaskan varian tujuan dan membuat salinan varian sumber.

Sintaks

HRESULT VariantCopy(
  [out] VARIANTARG       *pvargDest,
  [in]  const VARIANTARG *pvargSrc
);

Parameter

[out] pvargDest

Varian tujuan.

[in] pvargSrc

Varian sumber.

Menampilkan nilai

Fungsi ini dapat mengembalikan salah satu nilai ini.

Menampilkan kode Deskripsi
S_OK
Berhasil.
DISP_E_ARRAYISLOCKED
Varian berisi array yang dikunci.
DISP_E_BADVARTYPE
Jenis varian bukan tipe varian yang valid.
E_INVALIDARG
Salah satu argumen tidak valid.
E_OUTOFMEMORY
Tidak cukup memori untuk menyelesaikan operasi.

Keterangan

Pertama, bebaskan memori apa pun yang dimiliki oleh pvargDest, seperti VariantClear (pvargDest harus menunjuk ke varian yang diinisialisasi yang valid, dan tidak hanya ke lokasi memori yang tidak diinisialisasi). Kemudian pvargDest menerima salinan yang tepat dari isi pvargSrc.

Jika pvargSrc adalah VT_BSTR, salinan string dibuat. Jika pvargSrc adalah VT_ARRAY, seluruh array akan disalin. Jika pvargSrc adalah VT_DISPATCH atau VT_UNKNOWN, AddRef dipanggil untuk menambah jumlah referensi objek.

Jika varian yang akan disalin adalah objek COM yang diteruskan oleh referensi, vtfield pvargSrcparameter VT_DISPATCH | VT_BYREF atau VT_UNKNOWN | VT_BYREF. Dalam hal ini, VariantCopy tidak menaikkan jumlah referensi pada objek yang direferensikan. Karena varian yang sedang disalin adalah penunjuk ke referensi ke objek, VariantCopy tidak memiliki cara untuk menentukan apakah perlu untuk menaikkan jumlah referensi objek. Oleh karena itu, pemanggil bertanggung jawab untuk memanggil IUnknown::AddRef pada objek atau tidak, yang sesuai.

Catatan Metode VariantCopy bukan threadsafe.
 

Persyaratan

   
Target Platform Windows
Header oleauto.h
Pustaka OleAut32.lib
DLL OleAut32.dll

Lihat juga

Fungsi Manipulasi Varian