FsRtlCheckUpperOplock 関数 (ntifs.h)
FsRtlCheckUpperOplock ルーチンは、oplock が変更状態を保持するときに、セカンダリ または階層化されたファイル システムで日和見ロック (oplock) チェックを提供します。 ネットワーク リダイレクターやクラスタリング ファイル サービスなどのセカンダリ ファイル システムは、セカンダリ ファイル システムによって下位のファイル システムに保持されている oplock が状態を変更したときに、FsRtlCheckUpperOplock を呼び出します。 状態の変更は、中断またはアップグレードによって発生する可能性があります。 FsRtlCheckUpperOplock
構文
NTSTATUS FsRtlCheckUpperOplock(
[in] POPLOCK Oplock,
[in] ULONG NewLowerOplockState,
[in, optional] PVOID CompletionRoutineContext,
[in, optional] POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine,
POPLOCK_FS_PREPOST_IRP PrePendRoutine,
[in] ULONG Flags
);
パラメーター
[in] Oplock
ファイルの不透明な oplock ポインター。 このポインターは、FsRtlInitializeOplockへの以前の呼び出しによって初期化されている必要があります。
[in] NewLowerOplockState
セカンダリ ファイル システムによって下位のファイル システムに保持されている要求された oplock を表す値。 これは、次のビットごとの OR の組み合わせです。
価値 | 意味 |
---|---|
OPLOCK_LEVEL_CACHE_READ | oplock Read (R) 型を示します。 |
OPLOCK_LEVEL_CACHE_WRITE | Oplock Write (W) 型を示します。 |
OPLOCK_LEVEL_CACHE_HANDLE | oplock ハンドル (H) 型を示します。 |
[in, optional] CompletionRoutineContext
[in, optional] CompletionRoutine
呼び出し元が指定したコールバック ルーチンへのポインター。 日和見ロックの中断が進行中の場合は、中断が完了したときにこのルーチンが呼び出されます。 このパラメーターは省略可能であり、NULL にすることができます。 NULL の場合、呼び出し元は、日和見ロックの中断が完了するまで待機状態になります。
このルーチンの宣言とパラメーターの説明は次のとおりです。
typedef VOID
(*POPLOCK_WAIT_COMPLETE_ROUTINE) (
_In_ PVOID Context,
_In_opt_ PIRP Irp
);
パラメーター | 形容 |
---|---|
コンテキスト | |
Irp | I/O 操作の IRP への省略可能なポインター。 FsRtlCheckUpperOplock |
PrePendRoutine
fsRtlCheckUpperOplock がSTATUS_PENDINGを返す場合
このルーチンの宣言とパラメーターの説明は次のとおりです。
typedef VOID
(*POPLOCK_FS_PREPOST_IRP) (
_In_ PVOID Context,
_in_opt_ PIRP Irp
);
パラメーター | 形容 |
---|---|
コンテキスト | |
Irp | I/O 操作の IRP への省略可能なポインター。 FsRtlCheckUpperOplock |
[in] Flags
関連付けられているファイル I/O 操作のビットマスク。 ファイル システムまたはフィルター ドライバーは、fsRtlCheckUpperOplockの動作
価値 | 意味 |
---|---|
OPLOCK_UPPER_FLAG_CHECK_NO_BREAK (0x00010000) | NewLowerOplockState の値 |
OPLOCK_UPPER_FLAG_NOTIFY_REFRESH_READ (0x00020000) | 中断のみ読み取り (R) 上の oplocks し、再び R を要求する可能性があることを R の所有者に通知します。他のすべての上位の oplock チェックでは、STATUS_CANNOT_BREAK_OPLOCKが返されます。 |
戻り値
FsRtlCheckUpperOplock
リターン コード | 形容 |
---|---|
STATUS_SUCCESS | oplock の中断は必要ありません。または、中断が確認されました。 CompletionRoutine |
STATUS_CANNOT_BREAK_OPLOCK | oplock の中断を実行できません。 中断を制限する条件については、「フラグの」を参照してください。 |
STATUS_PENDING | 日和見ロックの中断が進行中です。 指定した場合、PrePendIrpRoutine が保留中の操作の通知として呼び出されます。 CompletionRoutine は、oplock ブレークが完了したときに呼び出されます。 STATUS_PENDINGは成功コードです。 |
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 8.1 |
ターゲット プラットフォーム の |
万国 |
ヘッダー | ntifs.h (Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <= APC_LEVEL |