FSCTL_REQUEST_OPLOCK控制代码
FSCTL_REQUEST_OPLOCK控制代码 (文件上的 oplock) 请求机会锁,或确认已发生 oplock 中断。
有关机会锁的详细信息,请参阅 Windows 桌面文档中的机会 锁 。 有关用户模式 OPLOCK 控件的详细信息,请参阅 Windows 桌面文档中 的文件管理控制代码 。
若要处理此控制代码,文件系统或筛选器驱动程序使用以下参数调用 FsRtlOplockFsctrlEx 。
参数
Oplock:文件的不透明不锁定对象指针。
Irp:指向IRP_MJ_FILE_SYSTEM_CONTROL FSCTL 请求的 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 | 在完成FSCTL_REQUEST_OPLOCK操作之前,IRP 已取消。 这是错误代码。 |
STATUS_OPLOCK_NOT_GRANTED | 无法授予 oplock。 这是错误代码。 |
要求
要求类型 | 要求 |
---|---|
标头 | Ntifs.h (包括 Ntifs.h 或 Fltkernel.h) |