SafeArrayLock 関数 (oleauto.h)
配列のロック数をインクリメントし、配列記述子の pvData 内の配列データへのポインターを配置します。
構文
HRESULT SafeArrayLock(
[in] SAFEARRAY *psa
);
パラメーター
[in] psa
SafeArrayCreate によって作成された配列記述子。
戻り値
この関数は、これらの値のいずれかを返すことができます。
リターン コード | 説明 |
---|---|
|
正常終了しました。 |
|
引数 psa が無効です。 |
|
配列をロックできませんでした。 |
注釈
配列記述子のポインターは、 SafeArrayUnlock 関数が呼び出されるまで有効です。 SafeArrayLock の呼び出しは入れ子にすることができます。この場合、SafeArrayUnlock への呼び出しの数が等しい必要があります。
配列はロックされている間は削除できません。
スレッド セーフ
SAFEARRAY データ型のすべてのパブリック静的 (Visual Basic では共有) メンバーはスレッド セーフです。 インスタンス メンバーがスレッド セーフであるとは限りません。
たとえば、SafeArrayLock 関数と SafeArrayUnlock 関数を使用するアプリケーションを考えてみましょう。 これらの関数が同じ SAFEARRAY データ型 インスタンス上の異なるスレッドから同時に呼び出されると、一貫性のないロックカウントが作成される可能性があります。 これにより、 SafeArrayUnlock 関数は最終的にE_UNEXPECTEDを返します。 これを防ぐには、独自の同期コードを指定します。
要件
要件 | 値 |
---|---|
対象プラットフォーム | Windows |
ヘッダー | oleauto.h |
Library | OleAut32.lib |
[DLL] | OleAut32.dll |