Поделиться через


Функция 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, путем прямого доступа к элементам массива. Этот подход выполняется быстрее, чем использование 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