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 的文件时,文件系统会发送此操作, (其每个卷计数从 1 转换为零) 。

如果驱动程序收到 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