BPIO_OPERATIONS列舉 (ntddstor.h)

BPIO_OPERATIONS 定義 IOCTL_STORAGE_MANAGE_BYPASS_IO 控件程式代碼支援的各種 BypassIO 作業。

Syntax

typedef enum _BPIO_OPERATIONS {
  BPIO_OP_ENABLE,
  BPIO_OP_DISABLE,
  BPIO_OP_QUERY
} BPIO_OPERATIONS;

常數

 
BPIO_OP_ENABLE
針對指定磁碟區或磁碟 (裝置啟用 BypassIO 的要求) ,這表示驅動程式可能不會看到該堆疊的所有讀取/寫入。

注意

磁碟區和記憶體堆疊中的所有驅動程式都有機會獲得 BypassIO 啟用要求的機會,但建議您儘可能啟用它。

在前置作業上:

* 如果驅動程式可以支援指定裝置的 BypassIO,它應該會將要求轉送至堆疊。
* 如果驅動程式不支援指定裝置的 BypassIO,它應該:
* 更新 BPIO_OUTPUT 結構,包括描述啟用要求為何遭到拒絕的作業 NTSTATUS、驅動程式名稱和唯一的描述性字串,以及關於啟用要求原因的其他詳細數據。
* 使用 STATUS_SUCCESS 完成IOCTL_STORAGE_MANAGE_BYPASS_IO。

在操作后期間,驅動程式可以看到其下方的所有驅動程式是否都能夠支援 BypassIO。 如果是,驅動程式應該保留檔案的任何必要狀態,並繼續完成處理。 驅動程式必須負責維護狀態,以正確處理可能與已啟用 BypassIO 狀態不相容的要求。

檔系統會維護目前已啟用 BypassIO 的個別磁碟區計數。 只有當此計數從零轉換為一時,才會傳送 BPIO_OP_ENABLE 作業。

即使磁碟區或記憶體堆疊驅動程式已佔用 BypassIO,檔系統堆疊仍可繼續執行 BypassIO。 這是因為如果有人在磁碟區堆疊上已經通過 BypassIO,文件系統仍然可以略過篩選。

BPIO_OP_DISABLE
針對指定的磁碟區/磁碟停用 BypassIO 的要求。 它可讓驅動程式清除任何相關聯的 BypassIO 狀態。

當上次啟用 BypassIO 的檔案停用或關閉時,檔案系統會傳送此作業, (其每個磁碟區計數從一到零) 轉換。

如果驅動程式收到 BPIO_OP_DISABLE 但目前未啟用 BypassIO,則應該忽略要求。

此作業不應該失敗。
BPIO_OP_QUERY
查詢是否可以針對指定的磁碟區或磁碟啟用 BypassIO。

記憶體驅動程式應該處理類似 BPIO_OP_ENABLE 作業的要求,並在 BPIO_OUTPUT 結構的適當欄位中填入相同的診斷資訊。 主要差異在於驅動程式不會在 QUERY 期間進入 BypassIO ENABLE 狀態。

備註

如需詳細資訊,請參閱 略過記憶體驅動程式的 BypassIO

規格需求

需求
最低支援的用戶端 Windows 11
標頭 ntddstor.h

另請參閱

IOCTL_STORAGE_MANAGE_BYPASS_IO