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
标头 oleauto.h
Library OleAut32.lib
DLL OleAut32.dll