檢查IRP_MJ_SET_INFORMATION作業的 Oplock 狀態
下列IRP_MJ_SET_INFORMATION作業會檢查 oplock 狀態:
- FileEndOfFileInformation
- FileAllocationInformation
- FileValidDataLengthInformation
- FileRenameInformation
- FileShortNameInformation
- FileLinkInformation
- FileDispositionInformation
檢查 FileEndOfFileInformation、FileAllocationInformation 和 FileValidDataLengthInformation 作業的 oplock 狀態
在檔案或數據流上執行下列作業時,會套用這項資訊:
呼叫端會嘗試變更數據流的邏輯大小。 請注意,當快取管理員的延遲寫入器線程嘗試設定新的檔案結尾時,不會進行 oplock 檢查。 這是因為先前收到實際寫入要求時會進行檢查。
呼叫端會嘗試變更數據流的配置大小。
層級 2 要求類型的條件
一律中斷為 None。
不需要任何通知;作業會立即繼續。
所有其他要求類型的條件
在 FileEndOfFileInformation、FileAllocationInformation 和 FileValidDataLengthInformation 的IRP_MJ_SET_INFORMATION (中断) 當作業發生於FILE_OBJECT上,且具有與擁有 oplock 之FILE_OBJECT的索引鍵不同。 如果 oplock 已中斷,請中斷為 None。
通知需求會有所不同,如下所示:
讀取要求:不需要通知;作業會立即繼續。
Read-Handle 要求:雖然需要中斷的通知,但作業會立即繼續 (,而不需要等候通知) 。
層級 1、批次、篩選、讀取寫入和讀寫句柄要求:必須在作業繼續之前收到通知。
檢查 FileRenameInformation、FileShortNameInformation 和 FileLinkInformation 作業的 oplock 狀態
在檔案或數據流上執行下列作業時,會套用這項資訊:
正在重新命名檔案或數據流。
正在為檔案設定簡短名稱。
正在為檔案建立硬式連結。 如果新的硬式連結取代了不同檔案的現有連結,且作業鎖定存在於要取代的連結上,這會影響 oplock 狀態。
正在重新命名 oplock 之數據流的上階目錄,或設定上階目錄的簡短名稱。
層級 1、層級 2、讀取和 Read-Write 作業的條件
作業鎖定不會中斷。
不需要通知,作業會立即繼續進行。
Batch、篩選、讀取句柄和讀寫句柄作業的條件
當作業發生於與擁有 oplock 之FILE_OBJECT索引鍵不同的FILE_OBJECT時,FileRenameInformation、FileShortNameInformation 和 FileLinkInformation) IRP_MJ_SET_INFORMATION (中断。 如果 oplock 已中斷:
批次和篩選要求會中斷為 [無]。
Read-Handle 要求中斷為 [讀取]。
讀取寫入句柄要求會中斷至讀寫。
必須先收到通知,才能繼續作業。
檢查 FileDispositionInformation 作業的 oplock 狀態
當呼叫端嘗試刪除檔案時,就會套用這項資訊。
當作業發生於FILE_OBJECT時,與擁有 oplock 索引鍵的FILE_OBJECT索引鍵不同,以及FILE_DISPOSITION_INFORMATION時,在 FileDispositionInformation) 的IRP_MJ_SET_INFORMATION (中断。DeleteFile 為 TRUE**。 如果 oplock 已中斷:
Read-Handle 要求中斷為 [讀取]。
讀取寫入句柄要求會中斷至讀寫。
必須先收到通知,才能繼續作業。