Windows 内核模式 I/O 管理器

计算机由各种设备组成,这些设备提供输入和输出 (外部世界的 I/O) 。 典型的设备包括键盘、鼠标、音频控制器、视频控制器、磁盘驱动器、网络端口等。 设备驱动程序提供设备和操作系统之间的软件连接。 因此,I/O 对于设备驱动程序编写器非常重要。

Windows 内核模式 I/O 管理器管理应用程序和设备驱动程序提供的接口之间的通信。 由于设备的运行速度可能与操作系统不匹配,因此操作系统和设备驱动程序之间的通信主要通过 I/O 请求数据包 (IRP) 完成。 这些数据包类似于网络数据包或 Windows 消息数据包。 它们从操作系统传递到特定驱动程序,以及从一个驱动程序传递到另一个驱动程序。

Windows I/O 系统提供称为堆栈的分层驱动程序模型。 通常,IRP 在同一堆栈中从一个驱动程序转到另一个驱动程序,以促进通信。 例如,游戏杆驱动程序需要与 USB 集线器通信,而 USB 集线器又需要与 USB 主机控制器通信,然后需要通过 PCI 总线与计算机硬件的其余部分进行通信。 堆栈由游戏杆驱动程序、USB 集线器、USB 主控制器和 PCI 总线组成。 通过让堆栈中的每个驱动程序发送和接收 IRP 来协调此通信。

驱动程序必须及时发送和接收 IRP 才能使整个堆栈高效运行,这一点再强调不过了。 如果驱动程序是堆栈的一部分,并且未正确接收、处理和传递信息,则驱动程序可能会导致系统崩溃。

有关 IRP 的详细信息,请参阅 处理 IRP

有关驱动程序堆栈的详细信息,请参阅 设备对象和设备堆栈

有关与 I/O 管理相关的编程技术,请参阅 I/O 管理器编程技术

为 I/O 管理器提供直接接口的例程通常以字母“Io”作为前缀;例如 IoCreateDevice。 有关 I/O 管理器例程的列表,请参阅 I/O 管理器例程

有关与 IRPS 相关的例程列表,请参阅 IRP

I/O 管理器有两个子组件:即插即用管理器和电源管理器。 他们管理即插即用和电源管理的技术的 I/O 功能。 有关即插即用管理的详细信息,请参阅 Windows Kernel-Mode 即插即用 Manager;有关电源管理的详细信息,请参阅 Windows Kernel-Mode Power Manager