什么情况下不需要自己编写USB驱动,Windows自带哪些USB驱动
在开发USB设备时,应尽量使用USB协议已经定义好的标准设备,这样可以不需要自己编写设备驱动程序,因为编写驱动程序非常耗时。下面我们看看Windows系统都提供了哪些USB设备驱动程序。
Microsoft 提供的 USB 设备类驱动程序
USB-IF 类代码 | 设备安装程序类 | Microsoft 提供的驱动程序和 INF | Windows 支持 | 描述 |
---|---|---|---|---|
音频 (01h) |
媒体 {4d36e96c-e325-11ce-bfc1-08002be10318} |
Usbaudio.sys Wdma_usb.inf |
Windows 8.1 Windows 8 Windows 7 Windows Server 2008 Windows Vista Windows Server 2003 Windows XP Windows 2000 |
Microsoft 通过 Usbaudio.sys 驱动程序为 USB 音频设备类提供支持。 |
通信和 CDC 控件 (02h) |
端口 {4D36E978-E325-11CE-BFC1-08002BE10318} |
Usbser.sys Usbser.inf |
Windows 10 Insider Preview |
在 Windows 10 Insider Preview 中,已添加新的 INF Usbser.inf ,它可将 Usbser.sys 自动加载为函数驱动程序。 |
调制解调器 {4D36E96D-E325-11CE-BFC1-08002BE10318} 注意 支持子类 02h (ACM)
|
Usbser.sys 自定义引用 mdmcpq.inf 的 INF |
Windows 8.1 Windows 8 Windows 7 Windows Server 2008 Windows Vista |
在 Windows 8.1 和较早版本中,Usbser.sys 不能自动加载。若要加载驱动程序,你需要编写可引用调制解调器 INF (mdmcpq.inf) 并包含 [Install] 和 [Needs] 部分的 INF。 从 Windows Vista 开始,用户即可通过设置注册表值来启用 CDC 和无线移动 CDC (WMCDC) 支持 启用 CDC 支持时,USB 公用类通用父驱动程序将枚举对应于CDC 和 WMCDC 控制模型的接口集合,并为这些集合分配物理设备对象 (PDO)。 |
|
Net {4d36e972-e325-11ce-bfc1-08002be10318} 注意 支持子类 0Eh (MBIM)
|
wmbclass.sys Netwmbclass.inf |
Windows 8.1 Windows 8 |
从 Windows 8 开始,Microsoft 提供 wmbclass.sys 驱动程序用于移动宽带设备。 |
|
HID(人体学接口设备) (03h) |
HIDClass {745a17a0-74d3-11d0-b6fe-00a0c90f57da} |
Hidclass.sys Hidusb.sys Input.inf |
Windows 8.1 Windows 8 Windows 7 Windows Server 2008 Windows Vista Windows Server 2003 Windows XP Windows 2000 |
Microsoft 提供了 HID 类驱动程序 (Hidclass.sys) 和微型类驱动程序 (Hidusb.sys),用以操作符合 USB HID 标准的设备。 |
物理设备 (05h) | - | - | - | 建议的驱动程序:WinUSB (Winusb.sys) |
图像 (06h) |
图像 {6bdd1fc6-810f-11d0-bec7-08002be2092f} |
Usbscan.sys Sti.inf |
Windows 8.1 Windows 8 Windows 7 Windows Server 2008 Windows Vista Windows Server 2003 Windows XP |
Microsoft 提供了 Usbscan.sys 驱动程序,用于在 Windows XP 和更新版本的操作系统中管理 USB 数码相机和扫描仪。 这个驱动程序实现了 Windows 图像体系结构 (WIA) 的 USB 组件。 |
打印机 (07h) |
USB 注意 Usbprint.sys 在设备安装程序类下枚举打印机设备:Printer{4d36e979-e325-11ce-bfc1-08002be10318}。
|
Usbprint.sys Usbprint.inf |
Windows 8.1 Windows 8 Windows 7 Windows Server 2008 Windows Vista Windows Server 2003 Windows XP Windows 2000 |
Microsoft 提供了 Usbprint.sys 类驱动程序,用以管理 USB 打印机。 |
大容量存储 (08h) |
USB |
Usbstor.sys |
Windows 8.1 Windows 8 Windows 7 Windows Server 2008 Windows Vista Windows Server 2003 Windows XP Windows 2000 |
Microsoft 提供了 Usbstor.sys 端口驱动程序,用以通过 Microsoft 本机存储类驱动程序管理 USB 大容量存储设备。 |
SCSIAdapter {4d36e97b-e325-11ce-bfc1-08002be10318} |
子类 (06) 和协议 (62) Uaspstor.sys Uaspstor.inf |
Windows 8.1 Windows 8 |
Uaspstor.sys 是用于支持批量流终结点的 SuperSpeed USB 设备的类驱动程序。 | |
集线器 (09h) |
USB {36fc9e60-c465-11cf-8056-444553540000} |
Usbhub.sys Usb.inf |
Windows 8.1 Windows 8 Windows 7 Windows Server 2008 Windows Vista Windows Server 2003 Windows XP Windows 2000 |
Microsoft 提供了 Usbhub.sys 驱动程序来管理 USB 集线器。 |
Usbhub3.sys Usbhub3.inf |
Windows 8.1 Windows 8 |
Microsoft 提供了 Usbhub3.sys 驱动程序来管理 SuperSpeed (USB 3.0) USB 集线器。 当 SuperSpeed 集线器连接到 xHCI 控制器时加载该驱动程序。 |
||
CDC 数据 (0Ah) | - | - | - | 建议的驱动程序:WinUSB (Winusb.sys) |
智能卡 (0Bh) |
SmartCardReader {50dd5230-ba8a-11d1-bf5d-0000f805f530} |
Usbccid.sys(已过时) |
Windows 7 Windows Server 2008 Windows Vista Windows Server 2003 Windows XP |
Microsoft 提供了 Usbccid.sys 微型类驱动程序,用于管理 USB 智能卡读卡器。 请注意,对于 Windows Server 2003、Windows XP 和 Windows 2000,需要遵照特殊说明加载此驱动程序,因为此驱动程序的发布时间可能晚于这些操作系统的发布时间。 注意
Usbccid.sys 驱动程序已替换为 UMDF 驱动程序 WUDFUsbccidDriver.dll。 |
WUDFUsbccidDriver.dll WUDFUsbccidDriver.inf |
Windows 8.1 Windows 8 |
WUDFUsbccidDriver.dll 是用户模式的驱动程序,用于 USB CCID 智能卡读取器设备。 | ||
内容安全性 (0Dh) | - | - | - | 建议的驱动程序:USB 通用父驱动程序 (Usbccgp.sys)。在 Usbccgp.sys 中实现了一些内容安全性功能。 |
视频 (0Eh) |
图像 {6bdd1fc6-810f-11d0-bec7-08002be2092f} |
Usbvideo.sys Usbvideo.inf |
Windows Vista Windows XP |
Microsoft 通过 Usbvideo.sys 驱动程序提供了 USB 视频类支持。
请注意,对于 Windows XP,需要遵照特殊说明加载此驱动程序,因为此驱动程序的发布时间可能晚于操作系统的发布时间。 |
个人医疗 (0Fh) | - | - | - | 建议的驱动程序:WinUSB (Winusb.sys) |
音频/视频设备 (10h) | - | - | - | |
诊断设备 (DCh) | - | - | - | 建议的驱动程序:WinUSB (Winusb.sys) |
无线控制器 (E0h)
注意 支持子类 01h 和协议 01h
|
蓝牙 {e0cbf06c-cd8b-4647-bb8a-263b43f0f974} |
Bthusb.sys Bth.inf |
Windows 8.1 Windows 8 Windows 7 Windows Vista Windows XP |
Microsoft 提供了 Bthusb.sys 微型端口驱动程序,用于管理 USB 蓝牙无线电。 |
其他 (EFh) |
Net {4d36e972-e325-11ce-bfc1-08002be10318} 注意 支持子类 04h 和协议 01h
|
Rndismp.sys Rndismp.inf |
Windows 8.1 Windows 8 Windows 7 Windows Vista Windows XP |
在 Windows Vista 之前,CDC 支持仅限带有供应商特有协议 (bInterfaceProtocol) 值 0xFF 的特定于 RNDIS 的抽象控制模型 (ACM) 实现。RNDIS 设施在单独一个类驱动程序 Rndismp.sys 中集中了所有 802 式网卡的管理。远程 NDIS 与 USB 的映射是在 Usb8023.sys 驱动程序中实现的 |
应用程序特定 (FEh) | - | - | - | 建议的驱动程序:WinUSB (Winusb.sys) |
供应商特定 (FFh) | - | - | - | 建议的驱动程序:WinUSB (Winusb.sys) |
如果你的应用符合以上特定类别就可以不需要自己编写设备驱动程序。
细心的朋友可能注意到上面有些应该不是特定设备类型,比如应用程序特定和供应商特定等,这都是厂商自定义设备,Windows也为我们提供了相应的驱动程序,那就是WinUSB,不错,厂商自定义设备还可以使用WinUSB,这样就不需要我们自己编写USB驱动了,不过,WinUSB也有些局限,比如它在Windows8.1以下不支持同步传输模式(Isochronous Transfers)。
当然,当你的设备有这些驱动不支持的功能时可能需要自己编写驱动,比如一些打印机应用,可能会有些特别的功能是厂商自己加进去的,并不是USB协议里有的功能。不过常见的标准设备类如HID设备类,Mass Storage大容量存储设备类等通常都不需要重新再编写驱动程序。、
微软也建议以下情况不需要编写驱动程序:
在这种情况下,系统加载对应的类驱动程序作为设备驱动程序。有关 Windows 自带驱动程序的设备类的列表,请参阅 上表:Microsoft 提供的 USB 设备类驱动程序
对于这类设备,可以对该设备的功能进行评估以决定是否能够加载 Microsoft 提供的 WinUSB (Winusb.sys) 作为该设备的函数驱动程序。 如果出现以下情况,则最佳解决方案是使用 WinUSB:
○你的设备由单个应用程序访问。
○你的设备支持批量、中断或常时等量终结点。
○你的设备将与运行 Windows XP Service Pack 2 (SP2) 以及更高版本的 Windows 的计算机一起使用。
通过加载 WinUSB 作为函数驱动程序,可提供更简单的备选方案来实施自定义 USB 驱动程序。例如,WinUSB 是仅由一个设备自带应用程序访问的电子气象站的首选方法。也可以用于与设备的诊断通信和刷新固件。
为了简化应用程序向 Winusb.sys 发送请求的过程,我们提供了用户模式的 DLL Winusb.dll,它可公开 WinUSB 功能。应用程序可以调用这些功能来访问和配置设备并将数据传输到该设备的终结点。
如果出现以下情况,WinUSB 将不可用:
○设备由多个应用程序访问。
○设备的功能受 Windows 操作系统内核模式的支持。例如,对于调制解调器功能(受 TAPI 支持)或 LAN 功能(受 NDIS 支持),你必须使用 Usbser.sys 驱动程序支持的接口才能通过用户模式软件管理调制解调器设备。
USB开源项目
百合电子工作室曾在2009年推出了一个USB开源项目:Easy USB 51 Programer,此项目以开源的形式展示了USB通信的基础性内容、USB HID设备类固件程序开发及PC端应用程序开发、自定义USB设备类固件程序开发及PC端驱动程...
|
USB产品
EASY USB D12 是原EASY USB 51 PROGRAMER的升级版,是百合电子工作室历时一年精心设计的一款USB学习板/开发板,与老款相比,其实例更丰富,技术文档更详尽,更重要的是此款USB学习板还提供技术支持。......
|