搜索
bottom↓
回复: 5

枚举WINUSB设备遇到的一个问题

[复制链接]

出0入0汤圆

发表于 2015-9-14 16:34:53 | 显示全部楼层 |阅读模式
网上说,将设备枚举成WINUSB设备时,需要先发送OS sting descriptor,但是为什么我没有收到来自主机的该命令请求呢,而是直接就收到了发送兼容ID的请求,是我处理错了还是根本就不需要发送OS string descriptor呢?我的系统是windows8,我知道在windows7上会收到这个命令,但不知道为什么windows8就收不到。有了解的大神麻烦告知一下下。谢谢。

出0入0汤圆

发表于 2015-9-14 22:14:06 | 显示全部楼层
发送兼容ID的请求 会用到 OS sting descriptor 的 bMS_VendorCode。
所以应该先有 OS sting descriptor 请求的。

WinUSB - 微软为所有 USB 设备提供的常规驱动程序
http://www.amobbs.com/thread-5530162-1-1.html
(出处: amoBBS 阿莫电子论坛)

出0入0汤圆

 楼主| 发表于 2015-9-15 23:22:27 | 显示全部楼层
我看过这个资料,网上很多地方说的都和这个一样,可是我实际开发时就是没有OS string 描述符的命令,直接发送兼容ID就成功了,这是在windows8.1上的的情况。而我又在windows7上测试了,就会收到那个命令请求。不知道这是为什么

出0入0汤圆

发表于 2019-7-5 19:29:16 | 显示全部楼层
您好请问下我按您的代码我OS 兼容ID注册GUID都已经被电脑识别到了为什么它还不会安装驱动 我是用的STM32F2的HID设备更改的代码 电脑已经接受到了 但不会自动安装 请问下这是为什么

出0入0汤圆

发表于 2019-7-5 19:30:10 | 显示全部楼层
如果您愿意为我解决这个问题的话我会有偿询问的 麻烦您了

出0入0汤圆

发表于 2019-11-28 20:29:54 | 显示全部楼层
本帖最后由 kingreat 于 2019-11-28 20:35 编辑

To determine whether a USB device supports Microsoft OS 1.0 descriptors, Windows issues a request for a USB string descriptor at the arbitrarily defined index of 0xEE.  Some USB devices do not handle that unexpected string query correctly, causing them to hang and/or fail enumeration.  To avoid such errors, Windows maintains an errata list of devices known to break when querying for the Microsoft OS string descriptor, and caches the response during initial enumeration of a device so that the query is not repeated on subsequent enumerations.   To avoid the issue with the MS OS 2.0 descriptors, a new BOS device capability descriptor has been defined to allow devices to return platform-specific properties.  The BOS descriptor is a standard descriptor defined by the standard USB specification for USB versions 2.1 and greater, so its retrieval is a normal and expected enumeration step which should not lead to unintended device behavior.

谷歌中文翻译
若要确定USB设备是否支持Microsoft OS 1.0描述符,Windows会在任意定义的索引0xEE处发出对USB字符串描述符的请求。某些USB设备无法正确处理该意外的字符串查询,从而导致它们挂起和/或枚举失败。为避免此类错误,Windows维护了一个已知的设备勘误表,该设备在查询Microsoft OS字符串描述符时会中断,并在设备的初始枚举期间缓存响应,以便在后续枚举时不再重复查询。
为避免MS OS 2.0描述符出现问题,已定义了新的BOS设备功能描述符,以允许设备返回特定于平台的属性。 BOS描述符是由USB 2.1版及更高版本的标准USB规范定义的标准描述符,因此,它的检索是正常且预期的枚举步骤,不应导致意外的设备行为。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 03:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表