VariantCopy 函式 (oleauto.h)
釋放目的地變體,並製作來源變體的複本。
語法
HRESULT VariantCopy(
[out] VARIANTARG *pvargDest,
[in] const VARIANTARG *pvargSrc
);
參數
[out] pvargDest
目的地變體。
[in] pvargSrc
來源變體。
傳回值
此函式可以傳回其中一個值。
傳回碼 | 描述 |
---|---|
|
成功。 |
|
Variant 包含已鎖定的陣列。 |
|
Variant 類型不是有效的 Variant 類型。 |
|
其中一個引數無效。 |
|
記憶體不足,無法完成作業。 |
備註
首先,釋放 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 |