本部分介绍 USB 硬件的一组可能的 WDM 驱动程序,以演示 WDM 驱动程序层。
下图展示了 USB 游戏杆的示例 PnP 硬件配置。
在此图中,USB 游戏杆插入 USB 集线器上的端口。 此示例中的 USB 中心驻留在 USB 主机控制器板上,并插入 USB 主机控制器板上的单端口。 USB 主机控制器插入 PCI 总线。 从 PnP 的角度来看,USB 中心、USB 主机控制器和 PCI 总线都是总线设备,因为它们都提供端口。 游戏杆不是总线设备。
下图显示了可能为上图中的 USB 游戏杆硬件加载的一组驱动程序示例。
从上图底部开始,示例堆栈中的驱动程序包括:
驱动 PCI 总线的 PCI 驱动程序。 这是 PnP 总线驱动程序。 PCI 总线驱动程序通过Microsoft提供给系统。
USB 主机控制器的总线驱动程序以类驱动程序/微型类驱动程序对的形式实现。 USB 主机控制器类和微类驱动程序由 Microsoft 随系统提供。
驱动 USB 集线器的 USB 集线器总线驱动程序。 USB 集线器驱动程序由微软随系统提供。
游戏杆设备的三个驱动程序,其中一个是一个类/小类对。
功能驱动程序是操纵杆设备的主要驱动程序,它由 HID 类驱动程序与 HID USB 微型类驱动程序组成的一对驱动程序。 (HID 表示“人机接口设备”。HID USB 小类驱动程序支持特定于 USB 的 HID 设备语义,并依赖于 HID 类驱动程序 DLL 来提供通用的 HID 支持。
函数驱动程序可以特定于特定设备,或者,与 HID 一样,函数驱动程序可以服务一组设备。 在此示例中,HID 类驱动程序/HID USB 子类驱动程序组合为 USB 总线上的任何系统中的所有符合 HID 的设备提供服务。 HID 类驱动程序与 HID 1394 微型类驱动程序组合将会为 1394 总线上的任何符合 HID 的设备提供服务。
函数驱动程序可由设备供应商或Microsoft编写。 在此示例中,函数驱动程序(HID 类/HID USB 微型类驱动程序对)由Microsoft编写。
本示例中游戏杆设备有两个筛选器驱动程序:一个上层类筛选器,该筛选器添加了宏按钮功能和较低级别的设备筛选器,使游戏杆能够模拟鼠标设备。
高层筛选器由需要筛选游戏杆 I/O 的人员编写,而低层筛选器驱动程序由游戏杆供应商编写。
内核模式和用户模式 HID 客户端和应用程序不是驱动程序,而是为了完整性而显示。