Поделиться через


Функция SafeArrayPutElement (oleauto.h)

Хранит элемент данных в указанном расположении массива.

Синтаксис

HRESULT SafeArrayPutElement(
  [in] SAFEARRAY *psa,
  [in] LONG      *rgIndices,
  [in] void      *pv
);

Параметры

[in] psa

Дескриптор массива, созданный safeArrayCreate.

[in] rgIndices

Вектор индексов для каждого измерения массива. Самым правым (наименее значимым) измерением является rgIndices[0]. Самое левое измерение хранится в rgIndices[psa->cDims – 1].

[in] pv

Данные, назначаемые массиву. Типы вариантов VT_DISPATCH, VT_UNKNOWN и VT_BSTR являются указателями и не требуют другого уровня косвенного обращения.

Возвращаемое значение

Эта функция может возвращать одно из этих значений.

Код возврата Описание
S_OK
Успешно.
DISP_E_BADINDEX
Указанный индекс недопустим.
E_INVALIDARG
Один из аргументов недопустим.
E_OUTOFMEMORY
Не удалось выделить память для элемента.

Комментарии

Эта функция автоматически вызывает SafeArrayLock и SafeArrayUnlock до и после назначения элемента. Если элемент данных является строкой, объектом или вариантом, функция правильно копирует его при уничтожении безопасного массива. Если существующий элемент является строкой, объектом или вариантом, он очищается правильно. Если элемент данных является VT_DISPATCH или VT_UNKNOWN, метод AddRef вызывается для увеличения числа ссылок объекта.

Примечание В массиве может быть несколько блокировок. Элементы можно поместить в массив, пока массив заблокирован другими операциями.
 
Пример, демонстрирующий вызов SafeArrayPutElement, см. в примере строк основы COM (CLines::Add в Lines.cpp).

Требования

Требование Значение
Целевая платформа Windows
Header oleauto.h
Библиотека OleAut32.lib
DLL OleAut32.dll