LockRegion メソッドはストリーム内の指定されたバイト範囲へのアクセスを制限する。
IStream_LockRegion this, libOffset, cb, dwLockType
this : [comobj] IStream インターフェースの COM オブジェクト変数 libOffset : [int64] 範囲の先頭のバイトオフセットを指定する整数。 cb : [int64] 制限する範囲の長さ (バイト単位) を指定する整数。 dwLockType : [int] 範囲へのアクセスに対して要求される制限を指定する。
(プラグイン / モジュール : com_misc.dll)
LockRegion メソッドはストリーム内の指定されたバイト範囲へのアクセスを制限する。 [戻り値] このメソッドは次のいずれかの値を返す。 | リターンコード | 説明 | |----------------|---------------| |S_OK | 指定されたバイト範囲がロックされた。| |E_PENDING | 非同期ストレージのみ: ストリームのデータの一部または全部が現在利用できない。 | |STG_E_INVALIDFUNCTION | ロックがまったくサポートされないか、要求された特定のタイプのロックがサポートされない。| |STG_E_LOCKVIOLATION | 要求されたロックはサポートされているが、既存のロックのため許可できない。| |STG_E_REVERTED | トランザクションツリーの上位の revert 操作によりオブジェクトが無効化された。| [備考] ストリームのバイト範囲は拡張できる。ストリームの拡張範囲をロックすることは、実際にはストリームの一部であるデータを変更せずに、ストリームの異なるインスタンス間の通信方法として有用である。3 つのタイプのロックがサポートされる: 他のライタを除外するロック、他のリーダまたはライタを除外するロック、指定された範囲に対するロックを 1 つの要求者のみが取得できるロック。これは通常、他の 2 つのロックタイプの 1 つのエイリアスである。指定されたストリームインスタンスは、最初の 2 つのタイプのいずれか、または両方をサポートする場合がある。ロックタイプは LOCKTYPE 列挙の値を使用して dwLockType で指定する。IStream::LockRegion でロックされた領域は、後で libOffset、cb、dwLockType パラメータにまったく同じ値を指定して IStream::UnlockRegion を呼び出して明示的にロック解除する必要がある。ストリームが解放される前に領域をロック解除する必要がある。隣接する 2 つの領域を別々にロックして、1 回のロック解除呼び出しでロック解除することはできない。呼び出し側への注意 サポートされるロックのタイプはオプションで、IStream の異なる実装で異なる場合があるため、STG_E_INVALIDFUNCTION エラーに対処するコードを提供する必要がある。LockRegion メソッドは複合ファイル実装には効果がない。実装が範囲ロックをサポートしないからである。実装者への注意 このメソッドのサポートはストリームオブジェクトの実装に対してオプションである。基礎となるファイルシステムによってサポートされない可能性があるからである。サポートされるロックのタイプもオプションである。要求されたタイプのロックがサポートされない場合、STG_E_INVALIDFUNCTION エラーが返される。
| プラグイン / モジュール | com_misc.dll |
| バージョン | 1.0 |
| 作成日 | 2026/04/16 |
| 著作者 | IronHSP / CsWin32 bridge |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の com_misc.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_com_misc_gen2.hs |