FSCTL_OPBATCH_ACK_CLOSE_PENDING控制代码

FSCTL_OPBATCH_ACK_CLOSE_PENDING控制代码响应通知,指出文件中的独占 (级别 1、批处理或筛选器) 机会锁 (oplock) 已损坏。 客户端应用程序发送此控制代码以指示它已确认 oplock 中断,并且即将关闭文件句柄。

对于批处理或筛选器操作锁中断,调用方必须在发送此控制代码后关闭其文件句柄。 否则,系统将阻止等待文件句柄关闭。

此控制代码不用于级别 1 oplock。 但是,对于级别 1 的 oplock 中断,系统将此控制代码视为中断的完整确认,并且调用方不需要关闭文件句柄。

此控制代码很少使用。 当客户端应用程序收到文件 oplock 中断的通知,并关闭该文件的句柄时,系统会将文件句柄关闭视为对 oplock 中断的完全确认。 因此,永远不需要发送此控制代码。

为了处理此控制代码,微筛选器使用以下参数调用 FltOplockFsctrl 。 文件系统或旧版筛选器驱动程序调用 FsRtlOplockFsctrl

有关机会锁定和FSCTL_OPBATCH_ACK_CLOSE_PENDING控件代码的详细信息,请参阅Microsoft Windows SDK文档。

参数

  • Oplock:文件的不透明不锁定对象指针。

  • CallbackData:仅限 FltOplockFsctrl 。 IRP_MJ_FILE_SYSTEM_CONTROL FSCTL 请求的回调数据 (FLT_CALLBACK_DATA) 结构。 操作 的 FsControlCode 参数必须FSCTL_OPBATCH_ACK_CLOSE_PENDING。

  • Irp:仅限 FsRtlOplockFsctrl 。 IRP_MJ_FILE_SYSTEM_CONTROL FSCTL 请求的 IRP。 操作 的 FsControlCode 参数必须FSCTL_OPBATCH_ACK_CLOSE_PENDING。

  • OpenCount:不与此操作一起使用;设置为零。

状态块

对于此操作,FltOplockFsctrl 始终返回FLT_PREOP_COMPLETE。

FsRtlOplockFsctrl 为此操作返回以下 NTSTATUS 值之一:

代码 含义
STATUS_SUCCESS 此句柄持有的 oplock 正在被破坏。
STATUS_INVALID_OPLOCK_PROTOCOL 此句柄未持有 oplock,或者当前未进行 oplock 中断。 这是错误代码。

要求

要求类型 要求
标头 Ntifs.h (包括 Ntifs.hFltkernel.h)

另请参阅

FLT_CALLBACK_DATA

IRP_MJ_FILE_SYSTEM_CONTROL 的 FLT_PARAMETERS

FltOplockFsctrl

FSCTL_OPLOCK_BREAK_ACK_NO_2

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE

FSCTL_OPLOCK_BREAK_NOTIFY

FSCTL_REQUEST_BATCH_OPLOCK

FSCTL_REQUEST_FILTER_OPLOCK

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FsRtlOplockFsctrl

IRP_MJ_FILE_SYSTEM_CONTROL