WinUSB简介
平台提供的WinUSB不需要厂商针对USB厂商自定义设备另外再开发USB驱动程序(实际上其它一些标准设备类也可以用WinUSB作驱动),微软已经编写好这个驱动(WinUSB.sys)。再说,从Win7系统开始微软已经弃用WDK,而改用WDF作为驱动开发新模式了,以前以WDK为基础开发的驱动程序必须改用WDF再开发一次才能适用于新的操作系统,如果以前用DriverStudio等第三方辅助工具的话,在Windows XP版本后就不再更新了,所以说难度是非常的在,而WinUSB为我们提供了一种简便的方式,比之前用DriverStudio开发驱动更方便,因为WinUSB根本不需要我们开发驱动程序。
不过WinUSB也不是万能的,也有一些局限。比如不适用所有Windows平台,在一些Windows平台上不支持同步传输(Isochronous Transfers)。
Windows不同版本 对 WinUSB 的支持
Windows 版本 | WinUSB 支持 |
---|---|
Windows 10 Insider Preview 及更高版本 | 是² |
Windows 7 | 是¹ |
Windows Server 2008 | 是² |
Windows Vista | 是² |
Windows Server 2003 | 否 |
Windows XP | 是³ |
Windows 2000 | 否 |
注:
是¹:此 Windows 版本的所有 SKU 在基于 x86、x64 和 Itanium 系统上都支持 WinUSB。
是²:此 Windows 版本的所有 SKU 在基于 x86 和 x64 的系统上都支持 WinUSB。
是³:Windows XP SP2 的所有客户端 SKU 都支持 WinUSB。WinUSB 不是 Windows XP 自带的程序,必须通过 WinUSB 辅助安装程序进行安装。
否:此版本的 Windows 不支持 WinUSB。
WinUSB只支持 Windows XP SP2 以上系统(微软技术文档其它多处地方提到WinUSB需要Windows XP及以上系统,并没说明要SP2以上,这点在后面我将进行验证)。在Windows XP系统下安装WinUSB驱动需要一种叫辅助安装程序的东西,什么是辅助安装程序呢,在后面的实例中将会看到。
WinUSB 在不同 Windows 版本中支持的高级 USB 功能
功能 | Windows 8.1 及更高版本 | Windows 7/Vista/XP |
---|---|---|
设备 I/O 控制请求 | 支持 | 支持 |
同步传输 | 支持 | 不支持 |
批量、控制和中断传输 | 支持 | 支持 |
选择性暂停 | 支持 | 支持 |
远程唤醒 | 支持 | 支持 |
WinUSB只有在Windows 8.1及更高版本中才支持同步传输,这一点请记住。
与WinUSB设备通信,是通过一个叫WinUSB.dll的动态链接库提供的函数接口实现。在WinXp系统下WinUSB.dll在安装驱动程序时由辅助安装程序随WinUSB.sys一起被安装。Visual Studio 2012以上版本有提供生成WinUSB应用程序的向导,WinUSB 功能一次仅允许一个应用程序与设备通信。如果需要多个应用程序同时与设备通信,则必须实现一个函数驱动程序。
在Windows 8以上系统中,可以不需要提供安装驱动程序所必须的inf文件,这个特性就像HID鼠标一样,使设备看起来就是个标准设备一样不需要安装驱动程序,这种机制其实是使用系统内置的inf文件,同时要求设备固件包含一种叫Microsoft OS 描述符的东西,这样设备首次插入PC后,就会自动安装WinUSB驱动程序。
微软已经为我们提供了非常详尽的技术文档,只不过只有部分是中文的,大家可以在微软技术支持网站msdn.microsoft.com上搜索相关内容,这里我列出一些链供参考:
对WinUSB的介绍:
http://msdn.microsoft.com/zh-cn/library/ff540196.aspx
WinUSB (Winusb.sys) 安装
https://msdn.microsoft.com/zh-cn/library/ff540283.aspx
如何通过 WinUSB 功能访问 USB 设备
https://msdn.microsoft.com/zh-cn/library/ff540174.aspx
另外微软还基于OSR USB FX2学习板提供了一个完整的实例,并配以详细的技术文档,只可惜是英文的(百合电子工作室USB专题站将会翻译此文档,并收录在本站的USB学习板配套光盘里)原文档下载地:http://download.microsoft.com/download/9/C/5/9C5B2167-8017-4BAE-9FDE-D599BAC8184A/WinUsb_HowTo.docx
USB产品
EASY USB D12 是原EASY USB 51 PROGRAMER的升级版,是百合电子工作室历时一年精心设计的一款USB学习板/开发板,与老款相比,其实例更丰富,技术文档更详尽,更重要的是此款USB学习板还提供技术支持。......
|