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 の中断が進行中であり、oplock の中断が完了したときに IRP が完了した場合、FLT_PREOP_PENDINGを返します。 (この場合、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
フィードバック
https://aka.ms/ContentUserFeedback。
近日公開予定: 2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub イシューを段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、以下を参照してください:フィードバックの送信と表示