FsRtlOplockBreakToNoneEx 関数 (ntifs.h)
FsRtlOplockBreakToNoneEx ルーチンは、oplock キーに関係なく、すべての日和見ロック (oplock) を直ちに中断します。
構文
NTSTATUS FsRtlOplockBreakToNoneEx(
[in, out] POPLOCK Oplock,
[in] PIRP Irp,
[in] ULONG Flags,
[in, optional] PVOID Context,
[in, optional] POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine,
[in, optional] POPLOCK_FS_PREPOST_IRP PostIrpRoutine
);
パラメーター
[in, out] Oplock
ファイルの不透明な oplock ポインター。 このポインターは、 FsRtlInitializeOplock の以前の呼び出しによって初期化されている必要があります。
[in] Irp
I/O 操作の IRP へのポインター。
[in] Flags
関連付けられたファイル I/O 操作のビットマスク。 ファイル システムまたはフィルター ドライバーは、 FsRtlOplockBreakToNoneEx の動作を指定するビットを設定します。 Flags パラメーターには、次のオプションがあります。
OPLOCK_FLAG_COMPLETE_IF_OPLOCKED (0x00000001)
oplock 中断の原因となった操作をブロックまたは保留中にせずに、oplock の中断を続行することを許可するように指定します。 通常、このフラグは、 Irp パラメーターが指す IRP がIRP_MJ_CREATE操作を宣言する場合にのみ使用されます。
[in, optional] Context
CompletionRoutine パラメーターと PostIrpRoutine パラメーターが指すコールバック ルーチンに渡される呼び出し元定義のコンテキスト情報へのポインター。
[in, optional] CompletionRoutine
呼び出し元が指定したコールバック ルーチンへのポインター。 oplock ブレークが進行中の場合は、中断が完了したときにこのルーチンが呼び出されます。 このパラメーターは省略可能であり、 NULL にすることができます。 NULL の場合、呼び出し元は oplock ブレークが完了するまで待機状態になります。
このルーチンは、次のように宣言されます。
typedef VOID
(*POPLOCK_WAIT_COMPLETE_ROUTINE) (
IN PVOID Context,
IN PIRP Irp
);
このルーチンには、次のパラメーターがあります。
Context
Context パラメーターで FsRtlOplockBreakToNoneEx に渡されたコンテキスト情報ポインター。
Irp
I/O 操作の IRP へのポインター。
[in, optional] PostIrpRoutine
I/O 操作をペンドする場合に呼び出される呼び出し元が指定したコールバック ルーチンへのポインター。 ルーチンは、oplock パッケージが IRP をペンする前に呼び出されます。 このパラメーターは省略可能であり、 NULL にすることができます。
このルーチンは、次のように宣言されます。
typedef VOID
(*POPLOCK_FS_PREPOST_IRP) (
IN PVOID Context,
IN PIRP Irp
);
Context
Context パラメーターで FsRtlOplockBreakToNoneEx に渡されたコンテキスト情報ポインター。
Irp
I/O 操作の IRP へのポインター。
戻り値
FsRtlOplockBreakToNoneEx は、次のいずれかのSTATUS_SUCCESSまたは適切な NTSTATUS コードを返します。
リターン コード | 説明 |
---|---|
|
IRP が取り消されました。 STATUS_CANCELLEDはエラー コードです。 |
|
oplock の中断が進行中です。 したがって、IRP はペンでペンされました。 STATUS_PENDINGは成功コードです。 |
|
日和見ロック ブレーク (oplock) が進行中です。 STATUS_OPLOCK_BREAK_IN_PROGRESSは、呼び出し元が Flags パラメーターにOPLOCK_FLAG_COMPLETE_IF_OPLOCKEDを設定し、oplock を壊す必要がある場合に FsRtlOplockBreakToNoneEx が返す成功コードです。 |
注釈
日和見ロックの詳細については、Microsoft Windows SDKドキュメントを参照してください。
ミニフィルターは、 FsRtlOplockBreakToNoneEx ではなく FltOplockBreakToNoneEx を呼び出す必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | FsRtlOplockBreakToNoneEx ルーチンは、Windows 7 以降で使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | ntifs.h (Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | <= APC_LEVEL |