WinUSB
+ -

WinUsb&windows兼容id

2025-08-11 0 0

Windows支持多种歉ID,兼容ID是 Windows 用来将设备与驱动程序包匹配的供应商定义的标识字符串.

USB设备支持Windows兼容ID的前提是USB版本号是否大于等于2.0,即bcdUSB大于等于0x0200。如果bcdUSB小于0x0200,则说明设备不支持,后续不会去请求 OS字符串描述符

如果大于等于,说明设备有可能支持OS字符串描述符,会在下一步去获取index为0xee的OS字符串描述符
103725992297
OS字符串描述符的格式固定,总长度为18,字符串前面的内容为unicode编码的”MSFT100”,最一个字节是vendor code,由厂商自己定义。

如下图定义为0x55
103816659823

系统获取了verdor code之后,会发送verdor请求

1字节 1字节 2字节 2字节 2字节
bmRequestType(1) bRequest(1) wValue(2) wIndex(2) wLength(2)
0xC0 供应商代码,例如0x55 0x0000 0x0004 0x0028

通过该请求获取OS扩展描述符内容如下:

类型 描述
0x28, 0x00, 0x00, 0x00 DWORD (LE) Descriptor length (40 bytes)
0x00, 0x01 BCD WORD (LE) Version (‘1.0’)
0x04, 0x00 WORD (LE) Compatibility ID Descriptor index (0x0004)
0x01 BYTE Number of sections (1)
0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00 7 BYTES Reserved
0x00 BYTE Interface Number (Interface #0)
0x01 BYTE Reserved
0x57, 0x49, 0x4E, 0x55, 0x53, 0x42, 0x00, 0x00 8 BYTES (NUL-terminated)ASCII String Compatible ID (“WINUSB\0\0”)
0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00 8 BYTES (NUL-terminated?)ASCII String Sub-Compatible ID(unused)
0x00, 0x00, 0x00, 0x00,0x00, 0x00 6 BYTES Reserved

如这里返回的兼容id为winusb
104525557017

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

使用WinUSB读写USB设备
Windows为WinUSB设备提供了API,主要通过以下几个步骤访问设备。通过扩展描述符中的GUID查看接口的路径用接口的路径作为参数,调用CreateFile打开接口使用WinUsb_Initialize得到WinUSB句柄通过WinUsb_WritePipe和WinUsb_ReadPipe对......
WinUSB 简介
WinUSB是Windows从Vista操作系统版本以来,新增加的一个USB设备功能驱动程序。使用该驱动,可以将设备变成一个自定义通讯的设备,当然该驱动也可应用于自定义设备驱动程序。WinUSB的组成WinUSB包括两大部分,分别为内核部分和应用层部分:内核部分,主要是WinUSB.sys,该......
WinUSB的安装方法
使用工具zadig进行安装winusb以管理员方式运行zadig-2.4.exe,然后在菜单的选择中选择列出所有设备。这会软件会枚举系统中所有的USB设备,并显示在下列组合对话框中。我们选中我们需要安装winusb的设备,然后点击ReInstallDriver按钮进行安装。如本人选中一个USB扬声器......
USB Packet Viewer 连接方式及驱动安装
典型的设备连接方式监听 PC 上运行 USB Packet Viewer 协议解析软件,通过 Type-C 数据线与抓包设备相连,同时也向抓包设备提供电源。待测试的 USB 主设备通过 Type-C 数据线与抓包设备的 Host 接口相连待测试的 USB 从设备通过 USB-A 数据线与抓包设备......
Windows驱动usbstor硬件ID生成规则
如本人手中的金士顿U盘,在设备管理器中如下:我们查看设备的属性信息,可以看到,其使用的驱动是:USBPCapy.sysUSBSTOR.SYS从驱动来看,这是一个典型的BOT协议的U盘,更多详见:http://www.usbzh.com/article/detail-353.htmlUSBST......
WinUsb优缺点
WinUSB是Microsoft提供的通用USB 驱动程序,适用于从Windows Vista开始但也可用于 Windows XP 的操作系统。它针对的是一次只能由一个应用程序访问的简单设备。它使应用程序能够通过一个简单的软件库直接访问设备。该库提供对设备管道的访问。WinUSB 公开了一个客户端 ......
VS2019使用WinUSB模板创建WinUSB应用程序
当USB设备使用WinUSB驱动之后,可以使用WinUSB提供的应用层库winusb.lig来进行应用程序的开发,这样在应用层可以通过Winusb驱动程序与USB设备进行通讯。开发WinUSB应用程序时需要使用VS开发,不过在建一个示例WinUSB应用程序时,首先得安装WDK,安装完成之后会在创建......
使用WinUSB检测USB设备是什么设备速率?高速、低速、全速
WinUSB提供了检测USB设备的速率代码,详见:// Device Information types#define DEVICE_SPEED 0x01// Device Speeds#define LowSpeed 0x01#def......
WinUSB获取USB设备端点信息
使用WinUsb_QueryInterfaceSettings函数获取指定接口下的所有信息,然后解析端点信息并打印。struct PIPE_ID{ UCHAR PipeInId; UCHAR PipeOutId;};BOOL QueryDeviceEndpoints (......
WinUSB使用控制端点0发送USB标准请求
向默认端点发出控制请求来与设备通信。除了与接口关联的端点外,所有 USB 设备还有一个默认端点。 默认端点的主要用途是为主机提供可用来配置设备的信息。 不过,设备还可以将默认端点用于设备特定的用途。控制命令包含一个 8 字节设置数据包,其中包括指定特定请求的请求代码和可选的数据缓冲区。 请求代码......
WinUSB使用WinUsb_WritePipe给USB设备写数据
WinUSB 提供了以下用于发送写入请求请求的函数:WinUsb_WritePipe写数据WinUsb_WritePipe分配一个缓冲区并使用要写入到设备的数据进行填充。 如果应用程序未将缓冲区大小设置为管道的策略RAW_IO,则缓冲区大小没有限制。 如有必要,WinUSB 会将缓冲区划分为......
WinUSB释放设备句柄
完成对设备的全部所需调用后,需要释放设备的文件句柄和 WinUSB 接口句柄。 为此,请调用以下函数:CloseHandle 释放由 CreateFile 创建的句柄。WinUsb_Free释放设备的 WinUSB 接口句柄,该句柄由 WinUsb_Initialize。VOIDClose......
WinUSB使用WinUsb_ReadPipe从USB设备读数据
WinUSB 提供了以下用于接收读取请求请求的函数:WinUsb_ReadPipe调用 WinUsb_ReadPipe 从设备的批量终结点读取数据。 传递设备的 WinUSB 接口句柄、用于批量传入终结点的管道标识符,以及适当大小的空缓冲区。 当函数返回时,缓冲区会包含已从设备读取的数据。 已......
WinUSB与设备通讯的代码流程
int _tmain(int argc, _TCHAR* argv[]){ GUID guidDeviceInterface = OSR_DEVICE_INTERFACE; //in the INF file BOOL bResult = TRUE; PIPE_ID ......
WinUSB枚举和打开设备
打开设备之前,得先枚举到设备,获取到设备的链接名,然后才能通过CreateFile打开设备,与之通讯。设备接口GUID枚举设备是通过winsub驱动的inf文件中的DeviceInterfaceGUIDs来实现的。在WinUSB驱动设备时,会使用该GUID来注册设备接口,所以我们也需要此接口来枚举......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • CDC
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    您的支持,是我们前进的动力!