Справочник по технологии COM
Страница 23. VariantCopy


 

VariantCopy

Освобождает принимающий вариант и копирует исходный.

HRESULT VariantCopy
(
VARIANTARG FAR* pvargDest,
VARIANTARG FAR* pvargSrc
);

Параметры:

  • pvargDest - Указатель на VARIANTARG, принимающий копию.
  • pvargSrc - Указатель на копируемый VARIANTARG.

Коды возврата:
Из возвращенного 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 для увеличения счетчика ссылок объекта. 

 
Следующая статья »