首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Windows 10 -清除USB枚举/驱动程序巡洋舰

Windows 10 -清除USB枚举/驱动程序巡洋舰
EN

Stack Overflow用户
提问于 2017-01-13 21:58:32
回答 4查看 12.9K关注 0票数 8

摘要

我正在开发固件和个人电脑测试应用程序的自定义USB设备,使用STM32F072发现板。该设备包括微软Windows兼容ID(WCID)以启用自动安装的WinUSB驱动程序在PC上。

该设备在其他Windows 10主机上是正确枚举的,但在我的Windows 10开发PC上不正确。当设备具有相同的VID/PID组合,但具有不同的描述符/元数据时,我的开发PC曾试图枚举该设备。如果我将PID更改为其他数字(对我的开发PC来说是新的),它就会正确地枚举。

问题

  1. 如何在我的开发PC上与我想要的VID/PID组合一起工作呢?
  2. Windows缓存USB元数据是导致这一台PC上枚举失败的原因吗?
  3. 在设备描述符和元数据不断变化的阶段,(Windows) PC端测试/开发USB设备固件的最佳实践是什么?为了避免Windows缓存,有可能避免咀嚼PID吗?

详细信息

由于Windows从以前的枚举中缓存USB描述符等的方式,在固件开发期间,每次进行其他更改后,我都会增加固件中的设备产品ID (PID),以确保Windows不会缓存描述符以前的迭代中的东西,并且会破坏本来可以工作的东西。

现在,我已经成功地在Windows7、8和10台PC上作为WinUSB设备枚举了设备,并建立了通信。但是,当我将固件改为使用我开始使用的VID/PID,然后将设备连接到我的开发PC时,它会显示在设备管理器中的“其他设备”下,并带有一个错误图标。我认为这是因为我的(Windows 10)开发PC之前认为这个VID/PID组合有不同的描述符,所以它被一些不好的缓存的东西弄糊涂了。

我尝试使用regedit删除HKLM\SYSTEM\CurrentControlSet\Enum\USB\VID_xxxx&PID_yyyy下设备的注册表项,但问题仍然存在。(另外,我收到一个错误,因为它无法删除VID_xxxx&PID_yyyy\zzzzzzzzzzzzz\Properties子文件夹。)我还尝试使用USBDeview卸载设备的旧迭代,但这也没有什么区别。

另外值得注意的是,我不能再将设备传递到Virtual虚拟机。我不知道那里发生了什么。

EN

回答 4

Stack Overflow用户

发布于 2017-01-18 00:52:12

尝试删除表单的任何相关注册表项:

代码语言:javascript
运行
复制
HLKM\SYSTEM\CurrentControlSet\Control\UsbFlags\vvvvpppprrrrr

MSDN的文章用于USB设备的Microsoft OS描述符说:

操作系统在此注册表项下创建一个名为osvc的注册表项,该注册表项指示设备是否支持Microsoft描述符。如果设备在操作系统第一次查询Microsoft OS字符串描述符时没有提供有效响应,则操作系统将不再对该描述符发出任何请求。

票数 6
EN

Stack Overflow用户

发布于 2018-05-03 22:50:21

我知道OP已经解决了他的问题,但是对于其他有这个问题的人来说,我也有类似的问题:我在开发带有特定厂商类的USB设备时遇到了类似的问题。具体来说,(类似于您的经验),我无法从以下位置删除键:

HKLM\SYSTEM\CurrentControlSet\Enum\USB\VID_xxxx&PID_yyyy

因此,每次修改设备代码时,我都必须增加PID值。

不能删除这些键的原因是Properties注册表子文件夹属于System user,因此即使以管理员身份运行,也不能删除该子文件夹或更改其权限。

从提升的命令提示符中通过PsExec ( Mark中的PsExecSysInternals套件的一部分)运行Regedit,这意味着您可以删除该讨厌的属性子文件夹和父VID_xxxx&PID_yyyy键。

票数 5
EN

Stack Overflow用户

发布于 2021-04-02 23:21:04

我面临着同样的问题,卸载设备没有帮助。在登记处乱搞让我感到不安。对于问题3,我仍然没有找到真正的答案。在我的情况下,什么是有效的:打开设备管理器,选择不工作的设备并执行“更新驱动程序”。从本地可用(Microsoft)驱动程序列表中手动选择驱动程序。这并没有解决我所有的问题,但至少Windows不再忽视我的设备,我可以继续开发。

编辑:我在一个名为WCID设备的github项目上找到了一个非常有用的描述。我强烈建议阅读本页的实现部分和下面的WCID器件

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41644081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档