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 Read (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 值:
傳回碼 | 描述 |
---|---|
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 |
目標平臺 | 普遍 |
標頭 | ntifs.h (include Ntifs.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <= APC_LEVEL |