Windows I/O 模型概述

每个操作系统都有一个隐式或显式 I/O 模型,用于处理与外围设备之间的数据流。 Microsoft Windows I/O 模型的一个功能是支持异步 I/O。 此外,I/O 模型具有以下常规功能:

  • I/O 管理器为所有内核模式驱动程序(包括最低级别、中间和文件系统驱动程序)提供一致的接口。 向驱动程序发送的所有 I/O 请求均作为 I/O 请求数据包 (IRP) 。

  • I/O 操作是分层的。 I/O 管理器导出 I/O 系统服务,用户模式保护子系统调用这些服务以代表其应用程序和/或最终用户执行 I/O 操作。 I/O 管理器截获这些调用,设置一个或多个 IRP,并通过可能分层的驱动程序将它们路由到物理设备。

  • I/O 管理器定义了驱动程序可以支持的一组标准例程,其中一些是必需,另一些是可选的。 鉴于外围设备之间的差异以及总线、函数、筛选器和文件系统驱动程序所需的功能不同,所有驱动程序都遵循相对一致的实现模型。

  • 与操作系统本身一样,驱动程序是基于对象的。 驱动程序、其设备和系统硬件表示为对象。 I/O 管理器和其他操作系统组件导出内核模式支持例程,驱动程序可以通过操作相应的对象来调用这些例程来完成工作。

除了使用 IRP 传达传统的 I/O 请求外,I/O 管理器还与 PnP 和电源管理器一起发送包含 PnP 和电源请求的 IRP。