Функция SafeArrayLock (oleauto.h)
Увеличивает число блокировок массива и помещает указатель на данные массива в pvData дескриптора массива.
Синтаксис
HRESULT SafeArrayLock(
[in] SAFEARRAY *psa
);
Параметры
[in] psa
Дескриптор массива, созданный safeArrayCreate.
Возвращаемое значение
Эта функция может возвращать одно из этих значений.
Код возврата | Описание |
---|---|
|
Успешно. |
|
Аргумент psa недопустим. |
|
Не удалось заблокировать массив. |
Комментарии
Указатель в дескрипторе массива действителен до вызова функции SafeArrayUnlock . Вызовы SafeArrayLock могут быть вложенными. В этом случае требуется равное количество вызовов SafeArrayUnlock .
Массив нельзя удалить, пока он заблокирован.
Потокобезопасность
Все общедоступные статические (общие в Visual Basic) члены типа данных SAFEARRAY являются потокобезопасны. Члены экземпляра не гарантируют потокобезопасность.
Например, рассмотрим приложение, использующее функции SafeArrayLock и SafeArrayUnlock . Если эти функции вызываются одновременно из разных потоков в одном экземпляре типа данных SAFEARRAY , может быть создано несогласованное число блокировок. В конечном итоге функция SafeArrayUnlock вернет E_UNEXPECTED. Это можно предотвратить, предоставив собственный код синхронизации.
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | oleauto.h |
Библиотека | OleAut32.lib |
DLL | OleAut32.dll |