FltOplockBreakToNone 函数 (fltkernel.h)
FltOplockBreakToNone 例程立即打破所有机会主义锁 (oplocks) 而不考虑任何 oplock 键。
语法
FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockBreakToNone(
[in] POPLOCK Oplock,
[in] PFLT_CALLBACK_DATA CallbackData,
[in, optional] PVOID Context,
[in, optional] PFLTOPLOCK_WAIT_COMPLETE_ROUTINE WaitCompletionRoutine,
[in, optional] PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE PrePostCallbackDataRoutine
);
参数
[in] Oplock
文件的不透明不锁定指针。 此指针必须已由之前对 FltInitializeOplock 的调用初始化。
[in] CallbackData
指向回调数据的指针 (I/O 操作 FLT_CALLBACK_DATA) 结构。
[in, optional] Context
指向要传递给 WaitCompletionRoutine 和 PrePostCallbackDataRoutine 参数指向的回调例程的调用方定义的上下文信息的指针。
[in, optional] WaitCompletionRoutine
指向调用方提供的回调例程的指针。 如果正在进行 oplock 中断,则会在中断完成时调用此例程。 此参数是可选的,可以为 NULL。 如果为 NULL,则调用方将进入等待状态,直到完成 oplock 中断。
此例程声明如下:
typedef VOID
(*PFLTOPLOCK_WAIT_COMPLETE_ROUTINE) (
__in PFLT_CALLBACK_DATA CallbackData,
__in_opt PVOID Context
);
此例程具有以下参数:
CallbackData
指向 I/O 操作的回调数据结构的指针。
上下文
在 Context 参数中传递到 FltOplockBreakToNone 的上下文信息指针。
[in, optional] PrePostCallbackDataRoutine
指向调用方提供的回调例程的指针,如果要插入 I/O 操作,则调用该例程。 例程在 oplock 包将 IRP 提交之前调用。 此参数是可选的,可以为 NULL。
此例程声明如下:
typedef VOID
(*PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE) (
__in PFLT_CALLBACK_DATA CallbackData,
__in_opt PVOID Context
);
此例程具有以下参数:
CallbackData
指向 I/O 操作的回调数据结构的指针。
上下文
在 Context 参数中传递到 FltOplockBreakToNone 的上下文信息指针。
返回值
FltOplockBreakToNone 返回以下FLT_PREOP_CALLBACK_STATUS代码之一:
返回代码 | 说明 |
---|---|
|
FltOplockBreakToNone 遇到池分配失败,或者对 FsRtlOplockBreakToNoneEx 函数的调用返回错误。 FltOplockBreakToNone 将在 IoStatus 成员的 IO_STATUS_BLOCK 结构的 Status 成员中设置错误代码。 IO_STATUS_BLOCK结构在FLT_CALLBACK_DATA回调数据结构的 IoStatus 成员中指定。 CallbackData 参数指向此FLT_CALLBACK_DATA。 |
|
启动 oplock 中断,导致筛选器管理器将 I/O 操作发布到工作队列。 I/O 操作由 CallbackData 参数指向的回调数据表示。 |
|
CallbackData 参数指向的回调数据未插入,并且会立即执行 I/O 操作。 |
注解
有关机会锁的详细信息,请参阅Microsoft Windows SDK文档。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | FltOplockBreakToNone 例程从 Windows 7 开始可用。 |
目标平台 | 通用 |
标头 | fltkernel.h (包括 Fltkernel.h) |
Library | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |