共用方式為


檢查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 要求中斷為 [讀取]。

    • 讀取寫入句柄要求會中斷至讀寫。

  • 必須先收到通知,才能繼續作業。