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


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

Увеличивает число блокировок массива и помещает указатель на данные массива в pvData дескриптора массива.

Синтаксис

HRESULT SafeArrayLock(
  [in] SAFEARRAY *psa
);

Параметры

[in] psa

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

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

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

Код возврата Описание
S_OK
Успешно.
E_INVALIDARG
Аргумент psa недопустим.
E_UNEXPECTED
Не удалось заблокировать массив.

Комментарии

Указатель в дескрипторе массива действителен до вызова функции SafeArrayUnlock . Вызовы SafeArrayLock могут быть вложенными. В этом случае требуется равное количество вызовов SafeArrayUnlock .

Массив нельзя удалить, пока он заблокирован.

Потокобезопасность

Все общедоступные статические (общие в Visual Basic) члены типа данных SAFEARRAY являются потокобезопасны. Члены экземпляра не гарантируют потокобезопасность.

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

Требования

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