BPIO_OPERATIONS枚举 (ntddstor.h)

BPIO_OPERATIONS 定义 IOCTL_STORAGE_MANAGE_BYPASS_IO 控制代码支持的各种 BypassIO作。

语法

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 的文件数的按卷计数。 仅当此计数从零转换到 1 时,才会发送 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 for storage drivers

要求

要求 价值
最低支持的客户端 Windows 11
标头 ntddstor.h

另请参阅

IOCTL_STORAGE_MANAGE_BYPASS_IO