检查IRP_MJ_SET_INFORMATION操作的 Oplock 状态
以下IRP_MJ_SET_INFORMATION操作检查 oplock 状态:
- FileEndOfFileInformation
- FileAllocationInformation
- FileValidDataLengthInformation
- FileRenameInformation
- FileShortNameInformation
- FileLinkInformation
- FileDispositionInformation
检查 FileEndOfFileInformation、FileAllocationInformation 和 FileValidDataLengthInformation 操作的 oplock 状态
当对文件或流执行以下操作时,此信息适用:
调用方尝试更改流的逻辑大小。 请注意,当缓存管理器的惰性编写器线程尝试设置文件的新端时,不会进行 oplock 检查。 这是因为之前在收到实际写入请求时会生成检查。
调用方尝试更改流的分配大小。
级别 2 请求类型的条件
始终中断为 None。
无需确认;操作会立即继续。
所有其他请求类型的条件
当操作发生在具有 oplock 的FILE_OBJECT上时,FileEndOfFileInformation、FileAllocationInform) ation、FileAllocationInformation 和 FileValidDataLengthInformation IRP_MJ_SET_INFORMATION (中断,该操作与拥有 oplock 的FILE_OBJECT的键不同。 如果 oplock 中断,则中断为 None。
确认要求有所不同,如下所示:
读取请求:无需确认;操作会立即继续。
Read-Handle 请求:尽管需要确认中断,但操作会立即 (继续,即无需等待确认) 。
级别 1、Batch、Filter、Read-Write 和 Read-Write-Handle 请求:在操作继续之前,必须收到确认。
检查 FileRenameInformation、FileShortNameInformation 和 FileLinkInformation 操作的 oplock 状态
当对文件或流执行以下操作时,此信息适用:
正在重命名文件或流。
正在为文件设置短名称。
正在为文件创建硬链接。 如果新的硬链接取代了其他文件的现有链接,并且被取代的链接上存在 oplock,则会影响 oplock 状态。
正在重命名 oplock 所在的流的上级目录,或者正在设置上级目录的短名称。
级别 1、级别 2、读取和 Read-Write 操作的条件
oplock 未中断。
无需确认,操作会立即继续。
Batch、Filter、Read-Handle 和 Read-Write-Handle 操作的条件
当操作发生在具有 oplock 键的FILE_OBJECT上时,FileRenameInformation、FileShortNameInformation 和 FileLinkInformation) 的IRP_MJ_SET_INFORMATION (中断,而 oplock 键与拥有 oplock 的FILE_OBJECT的键不同。 如果 oplock 中断:
Batch 和 Filter 请求中断为 None。
Read-Handle 请求中断为 Read。
Read-Write-Handle 请求中断为 Read-Write。
在操作继续之前,必须收到确认。
检查 FileDispositionInformation 操作的 oplock 状态
当调用方尝试删除文件时,此信息适用。
当操作在具有 oplock 键的FILE_OBJECT上发生时,FileDispositionInformation) 的IRP_MJ_SET_INFORMATION (中断,而 oplock 键与拥有 oplock 的FILE_OBJECT的键不同,并且FILE_DISPOSITION_INFORMATION。 DeleteFile 为 TRUE**。 如果 oplock 中断:
Read-Handle 请求中断为 Read。
Read-Write-Handle 请求中断为 Read-Write。
在操作继续之前,必须收到确认。