Windows 内核模式 I/O 管理器

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

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

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

必须强调您的驱动程序必须及时发送和接收 IRP,以便整个堆栈高效运行。 如果驱动程序是堆栈的一部分,并且无法正确接收、处理和传递信息,驱动程序可能会导致系统崩溃。

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

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

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

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

有关详细信息,请参阅 I/O 请求数据包IRP 结构(wdm.h)。

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