Функция 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 |
Header | oleauto.h |
Библиотека | OleAut32.lib |
DLL | OleAut32.dll |