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:文件的不透明不锁定对象指针。
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:未与此操作一起使用;设置为零。
状态块
如果 oplock 中断正在进行中,FltOplockFsctrl 将返回FLT_PREOP_PENDING,并且当 oplock 中断完成时,IRP 将完成。 (在这种情况下,IRP 最终可以使用 STATUS_SUCCESS 或 STATUS_CANCELLED.) 否则, FltOplockFsctrl 返回FLT_PREOP_COMPLETE。
FsRtlOplockFsctrl 为此操作返回以下 NTSTATUS 值之一:
代码 | 含义 |
---|---|
STATUS_SUCCESS | 此句柄未保留任何 oplock,或者保留 oplock 且未启动 oplock 中断。 |
STATUS_INVALID_OPLOCK_PROTOCOL | IRP 在FSCTL_OPLOCK_BREAK_NOTIFY操作完成之前已取消。 |
STATUS_PENDING | oplock 中断正在进行中。 当 oplock 中断完成时,IRP 将完成。 IRP 最终可以通过STATUS_SUCCESS或STATUS_CANCELLED完成。 这是一个成功代码。 |
要求
要求类型 | 要求 |
---|---|
标头 | Ntifs.h (包括 Ntifs.h 或 Fltkernel.h) |
另请参阅
IRP_MJ_FILE_SYSTEM_CONTROL 的 FLT_PARAMETERS
FSCTL_OPBATCH_ACK_CLOSE_PENDING