FSCTL_REQUEST_OPLOCK控制代码

控制 FSCTL_REQUEST_OPLOCK 代码请求对文件 (操作锁) 操作锁,或确认已发生 oplock 中断。

有关机会锁的信息,请参阅桌面桌面文档中的Windows锁。 有关用户模式 OPLOCK 控件详细信息,请参阅桌面桌面文档中的文件Windows控制代码。

若要处理此控制代码,文件系统或筛选器驱动程序将调用具有以下参数的 FsRtlOplockFsctrlEx

Parameters

Oplock
文件的不透明 oplock 对象指针。

Irp
指向 FSCTL 请求IRP_MJ_FILE_SYSTEM_CONTROL IRP 的指针。 该操作 的 FsControlCode 参数必须FSCTL_REQUEST_OPLOCK。

OpenCount
如果请求针对独占 oplock,则文件的用户句柄数。 如果请求针对可共享的 oplock,则如果文件上不存在字节范围锁, 则 OpenCount 为零。 否则, OpenCount 为非零。 调用方可以在 IRP 上调用 FsRtlOplockIsSharedRequest 例程,以确定请求是否针对可共享的 oplock。

标志
关联 oplock 运算的位掩码。 文件系统或筛选器驱动程序设置位以指定 FsRtlOplockFsctrlEx 的行为Flags 参数具有以下选项:

OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001)
指定文件系统已验证所有机会锁键是否与当前打开的任何句柄匹配。 通过指定此标志,当存在多个打开的文件句柄时,oplock 包可以授予级别 RW 或 RWH 的 oplock。 有关 oplock 类型的信息,请参阅 概述

状态块

FsRtlOplockFsctrlEx 返回此操作的以下 NTSTATUS 值之一:

术语 说明

STATUS_PENDING

已授予 oplock。 这是一个成功代码。

STATUS_CANCELLED

IRP 已取消,FSCTL_REQUEST_OPLOCK操作完成。 这是错误代码。

STATUS_OPLOCK_NOT_GRANTED

无法授予 oplock。 这是错误代码。

要求

标头

Ntifs.h (包括 Ntifs.h 或 Fltkernel.h)

另请参阅

FsRtlOplockFsctrlEx

FsRtlOplockIsSharedRequest

IRP_MJ_FILE_SYSTEM_CONTROL