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

要求

   
最低受支持的客户端 Windows 11
Header ntddstor.h

另请参阅

IOCTL_STORAGE_MANAGE_BYPASS_IO