支持异步 I/O

I/O 管理器提供异步 I/O 支持,以便 I/O 请求的发起方通常 (用户模式应用程序,但有时另一个驱动程序) 可以继续执行,而不是等待其 I/O 请求完成。 异步 I/O 支持可提高发出 I/O 请求的任何代码的总体系统吞吐量和性能。

使用异步 I/O 支持时,内核模式驱动程序不一定按照发送到 I/O 管理器的相同顺序处理 I/O 请求。 I/O 管理器或更高级别的驱动程序可以在收到 I/O 请求时重新排序。 驱动程序可以将大型数据传输请求拆分为较小的传输请求。 此外,驱动程序可以重叠 I/O 请求处理,尤其是在对称多处理器平台中,如 Multiprocessor-Safe 中所述。

此外,内核模式驱动程序对单个 I/O 请求的处理不一定是序列化的。 也就是说,驱动程序在开始处理下一个传入 I/O 请求之前,不一定处理每个 IRP 以完成。

当驱动程序收到 IRP 时,它会通过尽可能多地执行特定于 IRP 的处理来做出响应。 如果驱动程序支持异步 IRP 处理,它可以根据需要将 IRP 发送到下一个驱动程序,并开始处理下一个 IRP,而无需等待第一个 IRP 完成。 驱动程序可以注册“完成例程”,当另一个驱动程序处理完 IRP 时,I/O 管理器会调用该例程。 驱动程序在 IRP 的 I/O 状态块中提供状态值,其他驱动程序可以访问该值来确定 I/O 请求的状态。

驱动程序可以在设备对象的一个特殊部分(称为 设备扩展)中维护有关其当前 I/O 操作的状态信息。

有关详细信息,请参阅 处理 IRP输入/输出技术