SafeArrayAccessData 函数 (oleauto.h)
递增数组的锁计数,并检索指向数组数据的指针。
语法
HRESULT SafeArrayAccessData(
[in] SAFEARRAY *psa,
[out] void HUGEP **ppvData
);
参数
[in] psa
由 SafeArrayCreate 创建的数组描述符。
[out] ppvData
数组数据。
返回值
此函数可以返回其中一个值。
返回代码 | 说明 |
---|---|
|
成功。 |
|
参数 psa 无效。 |
|
无法锁定数组。 |
注解
调用 SafeArrayAccessData 后,必须调用 SafeArrayUnaccessData 函数来解锁数组。
示例
以下示例通过直接访问数组元素对包含 BSTR 的一个维度的安全数组进行排序。 此方法比使用 SafeArrayGetElement 和 SafeArrayPutElement 更快。
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 |