共用方式為


SafeArrayAccessData 函式 (oleauto.h)

遞增數位的鎖定計數,並擷取數位數據的指標。

語法

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

參數

[in] psa

SafeArrayCreate 所建立的陣列描述元。

[out] ppvData

陣列數據。

傳回值

此函式可以傳回其中一個值。

傳回碼 描述
S_OK
成功。
E_INVALIDARG
自變數 無效的。
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