FSCTL_OPLOCK_BREAK_NOTIFY 制御コード
FSCTL_OPLOCK_BREAK_NOTIFY 制御コードを使用すると、呼び出し元アプリケーションを便宜的ロック (oplock) の解除が完了するまで待機させることができます。
この操作は、呼び出し元のハンドルが開かれたときに oplock の解除が既に開始されていた場合にのみ役立ちます。 ハンドルが FILE_COMPLETE_IF_OPLOCKED を指定して開かれている必要があります。 この操作は oplock が現在保持されていて、かつ oplock の解除が開始されていない場合は意味がありません。
この制御コードを処理するために、ミニフィルターが次のパラメーターを指定して FltOplockFsctrl を呼び出します。 ファイル システムまたはレガシ フィルター ドライバーによって FsRtlOplockFsctrl が呼び出されます。
便宜的ロックと FSCTL_OPLOCK_BREAK_NOTIFY 制御コードの詳細については、Microsoft Windows SDK のドキュメントを参照してください。
パラメーター
Oplock: ファイルの不透明な oplock オブジェクト ポインター。
CallbackData: FltOplockFsctrl のみ。 IRP_MJ_FILE_SYSTEM_CONTROL FSCTL 要求のコールバック データ (FLT_CALLBACK_DATA) 構造体。 操作の FsControlCode パラメーターは FSCTL_OPLOCK_BREAK_NOTIFY である必要があります。
Irp: FsRtlOplockFsctrl のみ。 IRP_MJ_FILE_SYSTEM_CONTROL FSCTL 要求の IRP。 操作の FsControlCode パラメーターは FSCTL_OPLOCK_BREAK_NOTIFY である必要があります。
OpenCount: この操作では使用されません。0 に設定します。
ステータスブロック
FltOplockFsctrl は oplock の解除が進行中の場合は FLT_PREOP_PENDING を返し、oplock の解除が完了すると IRP が完了します。 (この場合、IRP は最終的に STATUS_SUCCESS または STATUS_CANCELLED で完了します)。それ以外の場合、FltOplockFsctrl は FLT_PREOP_COMPLETE を返します。
FsRtlOplockFsctrl はこの操作に対して次のいずれかの NTSTATUS 値を返します。
コード | 意味 |
---|---|
STATUS_SUCCESS | このハンドルによって oplock が保持されていなかったか、oplock が保持され、かつ oplock の解除が開始されていません。 |
STATUS_INVALID_OPLOCK_PROTOCOL | FSCTL_OPLOCK_BREAK_NOTIFY 操作が完了する前に IRP が取り消されました。 |
STATUS_PENDING | oplock の解除が進行中です。 oplock の解除が完了すると IRP が完了します。 IRP は最終的に STATUS_SUCCESS または STATUS_CANCELLED で完了します。 これは成功コードです。 |
要件
要件タイプ | 要件 |
---|---|
ヘッダー | Ntifs.h (Ntifs.h または Fltkernel.h を含む) |
関連項目
FLT_PARAMETERS (IRP_MJ_FILE_SYSTEM_CONTROL 用)
FSCTL_OPBATCH_ACK_CLOSE_PENDING