SafeArrayAccessData 函数 (oleauto.h)

递增数组的锁计数,并检索指向数组数据的指针。

语法

HRESULT SafeArrayAccessData(
  [in]  SAFEARRAY  *psa,
  [out] void HUGEP **ppvData
);

参数

[in] psa

SafeArrayCreate 创建的数组描述符。

[out] ppvData

数组数据。

返回值

此函数可以返回其中一个值。

返回代码 说明
S_OK
成功。
E_INVALIDARG
参数 psa 无效。
E_UNEXPECTED
无法锁定数组。

注解

调用 SafeArrayAccessData 后,必须调用 SafeArrayUnaccessData 函数来解锁数组。

示例

以下示例通过直接访问数组元素对包含 BSTR 的一个维度的安全数组进行排序。 此方法比使用 SafeArrayGetElementSafeArrayPutElement 更快。

long i, j, min; 
BSTR bstrTemp;
BSTR HUGEP *pbstr;
HRESULT hr;

// Get a pointer to the elements of the array.
hr = SafeArrayAccessData(psa, (void HUGEP**)&pbstr);
if (FAILED(hr))
goto error;

// Selection sort.
for (i = 0; i < psa->rgsabound.cElements-1; i++)
{
   min = i;
   for (j = i+1; j < psa->rgsabound.cElements; j++)
   {
      if (wcscmp(pbstr[j], pbstr[min]) < 0)
         min = j; 
   }

   // Swap array[min] and array[i].
   bstrTemp = pbstr[min];
   pbstr[min] = pbstr[i];
   pbstr[i] = bstrTemp;

}

SafeArrayUnaccessData(psa);

要求

要求
目标平台 Windows
标头 oleauto.h
Library OleAut32.lib
DLL OleAut32.dll