FsRtlOplockBreakH 関数 (ntifs.h)
FsRtlOplockBreakH ルーチンは、日和見ロック (oplocks) CACHE_HANDLE_LEVEL中断します。
構文
NTSTATUS FsRtlOplockBreakH(
[in] 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] Oplock
ファイルの不透明な日和見ロック ポインター。 このポインターは、FsRtlInitializeOplockを
[in] Irp
I/O 操作の IRP へのポインター。
[in] Flags
関連付けられているファイル I/O 操作のビットマスク。 ファイル システムまたはフィルター ドライバーは、fsRtlOplockBreakHの動作
OPLOCK_FLAG_COMPLETE_IF_OPLOCKED (0x00000001)
oplock 中断の原因となった操作をブロックまたは保留中にせずに、oplock の中断を続行できるように指定します。
OPLOCK_FLAG_IGNORE_OPLOCK_KEYS (0x00000008)
Windows 7 以降のバージョンでサポートされています。
oplock キーに関係なく、CACHE_HANDLE_LEVEL oplock の中断を続行することを許可するように指定します。
[in, optional] Context
[in, optional] CompletionRoutine
呼び出し元が指定したコールバック ルーチンへのポインター。 oplock の中断が進行中の場合、このルーチンは、中断が完了したときに呼び出されます。 このパラメーターは省略可能であり、NULL
このルーチンは、次のように宣言されます。
typedef VOID
(*POPLOCK_WAIT_COMPLETE_ROUTINE) (
IN PVOID Context,
IN PIRP Irp
);
このルーチンには、次のパラメーターがあります。
文脈
Irp
I/O 操作の IRP へのポインター。
[in, optional] PostIrpRoutine
I/O 操作をペンドする場合に呼び出される呼び出し元が指定したコールバック ルーチンへのポインター。 ルーチンは、oplock パッケージが IRP をペンする前に呼び出されます。 このパラメーターは省略可能であり、NULL
このルーチンは、次のように宣言されます。
typedef VOID
(*POPLOCK_FS_PREPOST_IRP) (
IN PVOID Context,
IN PIRP Irp
);
文脈
Irp
I/O 操作の IRP へのポインター。
戻り値
FsRtlOplockBreakH は、次のいずれかのSTATUS_SUCCESSまたは適切な NTSTATUS コードを返します。
リターン コード | 形容 |
---|---|
|
IRP が取り消されました。 STATUS_CANCELLEDはエラー コードです。 |
|
IRP が作業キューにポストされました。 STATUS_PENDINGは成功コードです。 |
|
日和見ロック (oplock) の中断を実行できません。 IRP はIRP_MJ_CREATE要求です。 FILE_OPEN_REQUIRING_OPLOCK操作の作成オプション パラメーターで指定され、許可された oplock があります。 STATUS_CANNOT_BREAK_OPLOCKはエラー コードです。 |
備考
操作が oplock CACHE_HANDLE_LEVEL中断する必要がある場合、操作は FsRtlOplockBreakH を呼び出します。
呼び出し元が
ミニフィルターは、FsRtlOplockBreakHではなく、FltOplockBreakH
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | FsRtlOplockBreakH ルーチンは、Windows 7 以降で使用できます。 |
ターゲット プラットフォーム の |
万国 |
ヘッダー | ntifs.h (Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |