Windows操作系统的USB驱动架构

USB中文网 2021-07-07 23:32:05 编辑

Winows操作系统下关于USB的驱动可分为:
20210505211537378588

Windows2000

在Windows2000时代,USB设备基本是USB1.0.USB1.1和少量的USB2.0设备。
所以USB驱动架构构为:

Windows2000 USB控制器

usbd.sys - Universal Serial Bus Driver 这是USB控制器的类驱动程序,配合2个端口驱动程序openhci.sys和uhcd.sys,这2个端口驱动分别对应于usb1.0和usb.1.1

Windows2000 USB集线器-HUB

USB集线器-HUB 对应于usbhub.sys

Windows2000 USB设备驱动

usbhub.sys枚举的驱动直接物理PDO,并附加相应的设备驱动。

Windows XP

Windows XP对USB设备栈模型做了比较大的变动,表现在USB控制器和USB设备上。
USB控制器将源来的类驱动名从win2000的usbd.sys改为usbport.sys,并且重新编写了端口驱动usbuhci.sys,usbohci.sys并增加了对usb2.0的支持usbehci.sys。

在设备层增加了usb通用类驱动,usbccgp.sys,使USB开始支持复合设备功能。

USB3.0设备栈

Windows vista(7),windows开始支持USB3.0驱动,其对应的总线控制器驱动为usbxhci.sys,usb扩展区动Ucx01000.sys。
usb的hub驱动也增加了usbhub3.sys.
所以从3.0开始,你USB的两层总线模型一样,其驱动也支持二层驱动栈模型。

Window10为了时行驱动开发调试,或对一些自定义设备通读,增加了winusb.sys,不过这个是基于wdf模型的,好处就是不用再开发专门的自定义驱动了。
20210505211553388903

参考文档: https://docs.microsoft.com/zh-cn/windows-hardware/drivers/usbcon/usb-3-0-driver-stack-architecture#usb-20-driver-stack