Справочник по технологии COM Страница 24. VariantCopylnd
|
Страница 24 из 111 VariantCopylnd Освобождает принимающий вариант и копирует исходный, выполняя необходимые обращения по указателям, если для исходного варианта задан флаг VT_BYREF. HRESULT VariantCopyInd ( VARIANTARG FAR* pvargDest, VARIANTARG FAR* pvargSrc );
Параметры: - pvargDest - Указатель на VARIANTARG, принимающий копию.
- pvargSrc - Указатель на копируемый VARIANTARG.
Коды возврата: Из возвращенного HRESULT получают один из следующих кодов возврата: Код возврата | Значение | S_OK | Успех. | DISP_E_ARRAYISLOCKED | Вариант содержит заблокированный массив. | DISP_E_BADVARTYPE | Исходный или принимающий вариант имеют недопустимый тип (обычно не инициализированы). | E_OUTOFMEMORY | Невозможно выделить память для размещения копии. | E_NVALIDARG | Аргумент pvargSrc — VT_ARRAY. | Комментарии: Эта функция полезна тогда, когда требуется копия варианта и необходимо гарантировать, что она не будет использовать VT_BYREF, например, при работе с аргументами в реализации IDispatch::Invoke. Например, если исходный тип — это (VT_BYREF | VT_I2), то принимающий вариант будет иметь тип просто VT_I2. Это верно для любых допустимых комбинаций с VT_BYREF, в том числе VT_VARIANT. Если pvargSrc имеет тип (VT_BYREF | VT_VARIANT) и содержащийся в нем вариант тоже использует VT_BYREF, то и вложенный вариант разыменовывается (dereferenced). Функция освобождает предыдущее содержимое pvargDest. |