VariantCopyInd (Compact 2013)
3/26/2014
This function frees existing content of the destination variant and makes a copy of the source VARIANTARG, performing the necessary indirection if the source is specified to be VT_BYREF.
Syntax
HRESULT VariantCopyInd(
VARIANT FAR* pvarDest,
VARIANTARG FAR* pvargSrc
);
Parameters
- pvarDest
[in] Pointer to the VARIANTARG that receives the copy.
- pvargSrc
[in] Pointer to the VARIANTARG that is copied.
Return Value
Returns the HRESULT values shown in the following table.
Value |
Description |
---|---|
S_OK |
Success. |
DISP_E_ARRAYISLOCKED |
The variant contains an array that is locked. |
DISP_E_BADVARTYPE |
The source and destination have an invalid variant type (usually uninitialized). |
E_OUTOFMEMORY |
Memory could not be allocated for the copy. |
E_INVALIDARG |
The argument pvargSrc was VT_ARRAY. |
Remarks
Passing invalid (and under some circumstances NULL) pointers to this function causes an unexpected termination of the application.
This function is useful when a copy of a variant is needed, and to guarantee that it is not VT_BYREF, such as when handling arguments in an implementation of IDispatch::Invoke.
For example, if the source is a (VT_BYREF | VT_I2), the destination will be a BYVAL | VT_I2. The same is true for all legal VT_BYREF combinations, including VT_VARIANT.
If pvargSrc is (VT_BYREF | VT_VARIANT), and the contained variant is VT_BYREF, the contained variant is also dereferenced.
This function frees existing contents of pvarDest.
Requirements
Header |
oleauto.h |
Library |
oleaut32.lib |
See Also
Reference
Automation Functions
VARIANT and VARIANTARG
IDispatch::Invoke