VariantCopy  (OLEAUT32.10)


 HRESULT VariantCopy
  VARIANTARG*       pvargDest,
  const VARIANTARG* pvargSrc


Copy a variant.


pvargDest [Out] Destination for copy.
pvargSrc [In] Source variant to copy.


Success: S_OK. pvargDest contains a copy of pvargSrc.

Failure: DISP_E_BADVARTYPE, if either variant has an invalid type. E_OUTOFMEMORY, if memory cannot be allocated. Otherwise an HRESULT error code from SafeArrayCopy, IRecordInfo_GetSize, or IRecordInfo_RecordCopy, depending on the type of pvargSrc.


- If pvargSrc == pvargDest, this function does nothing, and succeeds if pvargSrc is valid. Otherwise, pvargDest is always cleared using VariantClear before pvargSrc is copied to it. If clearing pvargDest fails, so does this function.

- VT_CLSID is a valid type type for pvargSrc, but not for pvargDest.

- For by-value non-intrinsic types, a deep copy is made, i.e. The whole value is copied rather than just any pointers to it.

- For by-value object types the object pointer is copied and the objects reference count increased using IUnknown_AddRef.

- For all by-reference types, only the referencing pointer is copied.


Declared in "oleauto.h".

Implemented in "dlls/oleaut32/variant.c".

Debug channel "variant".

Copyright © 2021 The Wine Project. All trademarks are the property of their respective owners. Visit WineHQ for license details. Generated Jun 2021.