Освобождает принимающий вариант и копирует исходный.
HRESULT VariantCopy ( VARIANTARG FAR* pvargDest, VARIANTARG FAR* pvargSrc );
Параметры:
Коды возврата:
Из возвращенного HRESULT получают один из следующих кодов возврата:
Код возврата | Значение |
---|---|
S_OK | Успех. |
DISP_E_ARRAYISLOCKED | Вариант содержит заблокированный массив. |
DISP_E_BADVARTYPE | Исходный или принимающий вариант имеют недопустимый тип (обычно не инициализированы). |
E_OUTOFMEMORY | He хватает памяти для копирования. |
E_INVALIDARG | Один из аргументов неверен. |
Комментарии:
Сначала память, владельцем которой является pvargDest, освобождается так же, как при вызове VariantClear (pvargDest должен указывать на инициализированный вариант, а не просто на неинициализированный блок памяти). Затем в pvargDest помещается точная копия содержимого pvargSrc.
Если pvargSrc имеет тип VT_BSTR, то копируется строка. Если pvargSrc — это VT_ARRAY, то копируется весь массив. Если pvargSrc — это VT_DISPATCH или VT_UNKNOWN, то вызывается AddRef для увеличения счетчика ссылок объекта.