本部分介绍主机驱动程序开发的概要概念和任务。 如果你正在编写与Microsoft提供的 USB 主机控制器扩展驱动程序(Ucx01000.sys)通信的新主机控制器驱动程序,则此部分适用于你。
下面是 Windows 中 USB 主机端驱动程序中显示的图表的修改版本。 此版本隐藏与主机控制器驱动程序开发无关的 USB 客户端驱动程序层的详细信息。
在上图中,
- USB 中心驱动程序(Usbhub3.sys) 是 KMDF 驱动程序。 中心驱动程序负责管理 USB 中心及其端口,包括对 USB 设备及其他可能连接到其下游端口的中心进行枚举和创建物理设备对象(PDO)。
- USB 主机控制器扩展(Ucx01000.sys) 是堆栈中上中心驱动程序的抽象层,并提供一种通用机制,用于将请求排队到基础主机控制器驱动程序。
- USB 主机控制器驱动程序 管理硬件。 Usbxhci.sys 是由 Microsoft 提供的此类驱动程序之一,专门针对符合 xHCI 规范的 USB 控制器硬件。 独立硬件开发人员可能需要编写自己的主机控制器驱动程序,而不是使用收件箱 Usbxhci.sys。 例如,对于不完全符合规范的 XHCI 硬件,因此无法使用 Usbxhci.sys,或者非 XHCI 硬件,例如通过 TCP 连接的 USB。
UCX 和主机控制器驱动程序之间的双向通信通过使用 USB 主机控制器扩展 (UCX) 编程接口进行。 编译驱动程序时,每个驱动程序静态链接到Microsoft提供的存根库 (Ucx01000.lib) 中的入口点。
下面是为主机控制器驱动程序加载的设备堆栈: