共用方式為


VariantCopy 函式 (oleauto.h)

釋放目的地變體,並製作來源變體的複本。

語法

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

參數

[out] pvargDest

目的地變體。

[in] pvargSrc

來源變體。

傳回值

此函式可以傳回其中一個值。

傳回碼 描述
S_OK
成功。
DISP_E_ARRAYISLOCKED
Variant 包含已鎖定的陣列。
DISP_E_BADVARTYPE
Variant 類型不是有效的 Variant 類型。
E_INVALIDARG
其中一個引數無效。
E_OUTOFMEMORY
記憶體不足,無法完成作業。

備註

首先,釋放 pvargDest 擁有的任何記憶體,例如 VariantClear (pvargDest 必須指向有效的初始化變體,而不只是指向未初始化的記憶體位置) 。 然後 pvargDest 會收到 pvargSrc 內容的確切複本。

如果 pvargSrc 是VT_BSTR,則會建立字串的複本。 如果 pvargSrcis VT_ARRAY,則會複製整個陣列。 如果 pvargSrc 是VT_DISPATCH或VT_UNKNOWN, 則會呼叫 AddRef 以遞增物件的參考計數。

如果要複製的變體是以傳址方式傳遞的 COM 物件,pvargSrcparameter 的 vtfield 會VT_DISPATCH |VT_BYREF或VT_UNKNOWN |VT_BYREF。 在此情況下, VariantCopy 不會遞增參考物件上的參考計數。 因為所複製的 Variant 是物件的參考指標, VariantCopy 無法判斷是否需要遞增物件的參考計數。 因此,呼叫端負責視需要呼叫物件上的 IUnknown::AddRef

注意VariantCopy方法不是 threadsafe。
 

需求

   
目標平台 Windows
標頭 oleauto.h
程式庫 OleAut32.lib
Dll OleAut32.dll

另請參閱

Variant 操作函式