다음을 통해 공유


SafeArrayAccessData 함수(oleauto.h)

배열의 잠금 수를 증가시키고 배열 데이터에 대한 포인터를 검색합니다.

구문

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

매개 변수

[in] psa

SafeArrayCreate에서 만든 배열 설명자입니다.

[out] ppvData

배열 데이터입니다.

반환 값

이 함수는 이러한 값 중 하나를 반환할 수 있습니다.

반환 코드 Description
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
라이브러리 OleAut32.lib
DLL OleAut32.dll