SafeArrayAccessData 関数 (oleauto.h)
配列のロックカウントをインクリメントし、配列データへのポインターを取得します。
構文
HRESULT SafeArrayAccessData(
[in] SAFEARRAY *psa,
[out] void HUGEP **ppvData
);
パラメーター
[in] psa
SafeArrayCreate によって作成された配列記述子。
[out] ppvData
配列データ。
戻り値
この関数は、これらの値のいずれかを返すことができます。
リターン コード | 説明 |
---|---|
|
正常終了しました。 |
|
引数 psa が無効です。 |
|
配列をロックできませんでした。 |
注釈
SafeArrayAccessData を呼び出した後、SafeArrayUnaccessData 関数を呼び出して配列のロックを解除する必要があります。
例
次の例では、配列要素に直接アクセスして、BSTR を含む 1 次元の安全な配列を並べ替えます。 この方法は、 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 |