Функция VariantCopy (oleauto.h)
Освобождает вариант назначения и создает копию исходного варианта.
Синтаксис
HRESULT VariantCopy(
[out] VARIANTARG *pvargDest,
[in] const VARIANTARG *pvargSrc
);
Параметры
[out] pvargDest
Вариант назначения.
[in] pvargSrc
Исходный вариант.
Возвращаемое значение
Эта функция может возвращать одно из этих значений.
Код возврата | Описание |
---|---|
|
Успешно. |
|
Вариант содержит заблокированный массив. |
|
Тип variant не является допустимым типом variant. |
|
Один из аргументов недопустим. |
|
Недостаточно памяти для завершения операции. |
Комментарии
Во-первых, освободите любую память, принадлежающую pvargDest, например VariantClear (pvargDest должна указывать на допустимый инициализированный вариант, а не просто на неинициализированное расположение памяти). Затем pvargDest получает точную копию содержимого pvargSrc.
Если pvargSrc является VT_BSTR, создается копия строки. Если pvargSrc представляет собой VT_ARRAY, копируется весь массив. Если pvargSrc является VT_DISPATCH или VT_UNKNOWN, вызывается Метод AddRef для увеличения числа ссылок объекта.
Если копируемым вариантом является COM-объект, передаваемый по ссылке, поле vtfield pvargSrcparameter VT_DISPATCH | VT_BYREF или VT_UNKNOWN | VT_BYREF. В этом случае VariantCopy не увеличивает количество ссылок на объект, на который указывает ссылка. Так как копируемый вариант является указателем на ссылку на объект, VariantCopy не может определить, нужно ли увеличивать количество ссылок объекта. Поэтому вызывающий объект несет ответственность за вызов IUnknown::AddRef для объекта или нет соответствующим образом.
Требования
Целевая платформа | Windows |
Header | oleauto.h |
Библиотека | OleAut32.lib |
DLL | OleAut32.dll |