variantCopy 函数 (oleauto.h)

释放目标变体并创建源变体的副本。

语法

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

parameters

[out] pvargDest

目标变体。

[in] pvargSrc

源变体。

返回值

此函数可以返回其中一个值。

返回代码 说明
S_OK
成功。
DISP_E_ARRAYISLOCKED
变量包含锁定的数组。
DISP_E_BADVARTYPE
变体类型不是有效的变体类型。
E_INVALIDARG
其中一个参数无效。
E_OUTOFMEMORY
内存不足,无法完成操作。

注解

首先,释放 pvargDest 拥有的任何内存,例如 variantClear (pvargDest 必须指向有效的初始化变体,而不只是指向未初始化的内存位置) 。 然后 pvargDest 接收 pvargSrc 内容的确切副本。

如果 pvargSrc 是VT_BSTR,则会创建字符串的副本。 如果 pvargSrc 是VT_ARRAY,则复制整个数组。 如果 pvargSrc 是VT_DISPATCH或VT_UNKNOWN,则调用 AddRef 以递增对象的引用计数。

如果要复制的变体是通过引用传递的 COM 对象,则 pvargSrc 参数的 vtfield 将VT_DISPATCH |VT_BYREF或VT_UNKNOWN |VT_BYREF。 在这种情况下, VariantCopy 不会递增引用对象上的引用计数。 由于要复制的变体是指向对对象的引用的指针, 因此 VariantCopy 无法确定是否有必要递增对象的引用计数。 因此,调用方负责根据需要对对象调用 IUnknown::AddRef

注意VariantCopy 方法不是线程安全方法。
 

要求

   
目标平台 Windows
标头 oleauto.h
Library OleAut32.lib
DLL OleAut32.dll

请参阅

变体操作函数