FsRtlUpperOplockFsctrl 函式 (ntifs.h)

FsRtlUpperOplockFsctrl 例程會處理不透明的鎖定 (oplock) 次要或分層文件系統的要求和通知。 上方文件系統會提交在較低文件系統中保留的 oplock 狀態。 FsRtlUpperOplockFsctrl 會判斷是否要授與或拒絕上層文件系統 oplock。

語法

NTSTATUS FsRtlUpperOplockFsctrl(
  [in] POPLOCK Oplock,
  [in] PIRP    Irp,
  [in] ULONG   OpenCount,
  [in] ULONG   LowerOplockState,
  [in] ULONG   Flags
);

參數

[in] Oplock

檔案的不透明不透明鎖定指標。 此指標必須由 先前對 FsRtlInitializeOplock 的呼叫初始化。

[in] Irp

I/O 作業之 IRP 的指標。

[in] OpenCount

如果要求獨佔的 oplock,檔案的使用者句柄數目。 設定層級 2、R 或 RH oplock 要求的非零值表示檔案上有位元組範圍鎖定。 如需 oplock 類型的詳細資訊,請參閱 Oplocks 的類型

[in] LowerOplockState

上層文件系統所保留的較低 oplock 層級值。 這是下列專案的位 OR 組合:

意義
OPLOCK_LEVEL_CACHE_READ 指出 oplock 讀取 (R) 類型。
OPLOCK_LEVEL_CACHE_WRITE 指出 oplock Write (W) 類型。
OPLOCK_LEVEL_CACHE_HANDLE 指出 oplock Handle (H) 類型。

[in] Flags

相關聯 oplock 作業的位掩碼。 文件系統或篩選驅動程式會設定位,以指定 FsRtlUpperOplockFsctrl 的行為。 Flags 參數具有下列選項:

意義
OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) 檔系統已確認任何目前開啟句柄上的所有 oplock 機碼都相符。 藉由指定此旗標,您可以在檔案存在多個開啟句柄時,允許 oplock 套件授與層級 RW 或 RWH 的 oplock。

傳回值

FsRtlUpperOplockFsctrl 會傳回下列其中一個 NTSTATUS 值:

傳回碼 Description
STATUS_SUCCESS 若為IRP_MJ_CREATE要求,STATUS_SUCCESS表示已授與要求的篩選機率鎖定 (oplock) 。 針對 FSCTL 作業,STATUS_SUCCESS的意義取決於 FSCTL 程式代碼。 如需詳細資訊,請參閱 FsRtlOplockFsctrlEx 中的一節。
STATUS_CANCELLED I/O 作業已取消。 STATUS_CANCELLED是錯誤碼。
STATUS_INVALID_PARAMETER I/O 作業的 FSCTL 程式代碼不是有效的值 oplock 要求。 有效的要求類型列在 FsRtlOplockFsctrlEx 的一節中。 STATUS_INVALID_PARAMETER是錯誤碼。
STATUS_OPLOCK_NOT_GRANTED 無法授與 oplock。 要求的上層文件系統 oplock 層級對較低文件系統授與的 oplock 無效。 STATUS_OPLOCK_NOT_GRANTED是錯誤碼。
STATUS_PENDING 僅適用於 FSCTL 作業。 STATUS_PENDING的意義取決於 FSCTL 程式代碼。 如需詳細資訊,請參閱 FsRtlOplockFsctrlEx 中的一節。 STATUS_PENDING是成功的程序代碼。
STATUS_CANNOT_GRANT_REQUESTED_OPLOCK 不允許新 oplock 的 oplock 通知。 鎖定上限文件系統的層級對較低的文件系統 oplock 無效。

規格需求

需求
最低支援的用戶端 Windows 8.1
目標平台 Universal
標頭 ntifs.h (包含 Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL IRQL <= APC_LEVEL

另請參閱

FsRtlCheckUpperOplock

FsRtlOplockFsctrlEx