variantCopy 函数 (oleauto.h)
释放目标变体并创建源变体的副本。
语法
HRESULT VariantCopy(
[out] VARIANTARG *pvargDest,
[in] const VARIANTARG *pvargSrc
);
parameters
[out] pvargDest
目标变体。
[in] pvargSrc
源变体。
返回值
此函数可以返回其中一个值。
返回代码 | 说明 |
---|---|
|
成功。 |
|
变量包含锁定的数组。 |
|
变体类型不是有效的变体类型。 |
|
其中一个参数无效。 |
|
内存不足,无法完成操作。 |
注解
首先,释放 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 |