Шаг 23 - VariantCopy

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

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

Параметры:

Коды возврата:
Из возвращенного HRESULT получают один из следующих кодов возврата:

Код возвратаЗначение
S_OKУспех.
DISP_E_ARRAYISLOCKEDВариант содержит заблокированный массив.
DISP_E_BADVARTYPEИсходный или принимающий вариант имеют недопустимый тип (обычно не инициализированы).
E_OUTOFMEMORYHe хватает памяти для копирования.
E_INVALIDARGОдин из аргументов неверен.

Комментарии:
Сначала память, владельцем которой является pvargDest, освобождается так же, как при вызове VariantClear (pvargDest должен указывать на инициализированный вариант, а не просто на неинициализированный блок памяти). Затем в pvargDest помещается точная копия содержимого pvargSrc.
Если pvargSrc имеет тип VT_BSTR, то копируется строка. Если pvargSrc — это VT_ARRAY, то копируется весь массив. Если pvargSrc — это VT_DISPATCH или VT_UNKNOWN, то вызывается AddRef для увеличения счетчика ссылок объекта.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 02.03.2002