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_CALLBACK_DATA

FLT_PARAMETERS

FLT_PARAMETERS (IRP_MJ_FILE_SYSTEM_CONTROL 用)

FltOplockFsctrl

FSCTL_OPBATCH_ACK_CLOSE_PENDING

FSCTL_OPLOCK_BREAK_ACK_NO_2

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE

FSCTL_REQUEST_BATCH_OPLOCK

FSCTL_REQUEST_FILTER_OPLOCK

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FsRtlOplockFsctrl

IRP_MJ_FILE_SYSTEM_CONTROL