FSCTL_REQUEST_OPLOCK 制御コード
FSCTL_REQUEST_OPLOCK 制御コードは、ファイルに対して便宜的ロック (oplock) を要求するか、oplock の解除が発生したことを確認します。
便宜的ロックの詳細については、Windows デスクトップ ドキュメントの「便宜的ロック」を参照してください。 ユーザー モードの OPLOCK 制御の詳細については、Windows デスクトップ ドキュメントの「ファイル管理の制御コード」を参照してください。
この制御コードを処理するために、ファイル システムまたはフィルター ドライバーは、次のパラメーターを指定して FsRtlOplockFsctrlEx を呼び出します。
パラメーター
Oplock: ファイルの不透明な oplock オブジェクト ポインター。
Irp: IRP_MJ_FILE_SYSTEM_CONTROL FSCTL 要求の IRP へのポインター。 操作の FsControlCode パラメーターは FSCTL_REQUEST_OPLOCK である必要があります。
OpenCount: 要求が排他的な oplock である場合、ファイルのユーザー ハンドルの数。 共有できる oplock に対する要求で、ファイルにバイト範囲ロックが存在しない場合、OpenCount はゼロになります。 それ以外の場合、OpenCount は 0 以外になります。 呼び出し元は、要求が共有できる oplock 用かどうかを判断するために、IRP に対する FsRtlOplockIsSharedRequest ルーチンを呼び出すことができます。
Flags: 関連付けられている oplock 操作のビットマスク。 ファイル システムまたはフィルター ドライバーによって、FsRtlOplockFsctrlEx の動作を指定するビットが設定されます。 Flags パラメーターには次のオプションがあります。
Value 意味 OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) 現在開いているすべてのハンドルに対して、すべての便宜的ロック キーが一致することがファイル システムによって確認されたことを指定します。 このフラグを指定することで、ファイルに対する複数のオープン ハンドルが存在する場合に、oplock パッケージがレベル RW または RWH の oplock を許可できます。 oplock の種類の詳細については、概要を参照してください。
ステータスブロック
FsRtlOplockFsctrlEx はこの操作に対して次のいずれかの NTSTATUS 値を返します。
コード | 意味 |
---|---|
STATUS_PENDING | oplock が許可されました。 これは成功コードです。 |
STATUS_CANCELLED | FSCTL_REQUEST_OPLOCK 操作が完了する前に IRP が取り消されました。 これはエラー コードです。 |
STATUS_OPLOCK_NOT_GRANTED | oplock を許可できませんでした。 これはエラー コードです。 |
要件
要件タイプ | 要件 |
---|---|
ヘッダー | Ntifs.h (Ntifs.h または Fltkernel.h を含む) |