IStream_LockRegion

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
URLhttps://github.com/inovia/IronHSP
備考Win32 API の com_misc.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_com_misc_gen2.hs