gpt4 book ai didi

Windows 10 - 清除 USB 枚举/驱动程序问题

转载 作者:可可西里 更新时间:2023-11-01 13:54:30 33 4
gpt4 key购买 nike

总结

我正在为自定义 USB 设备开发固件和 PC 测试应用程序,使用 STM32F072 Discovery board .该设备包括 Microsoft Windows Compatible IDs (WCIDs) to enable automatic installation PC 上的 WinUSB 驱动程序。

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

问题

  1. 我怎样才能让它在我的开发 PC 上与我想要的 VID/PID 组合一起工作?
  2. Windows 缓存 USB 元数据是否是这台 PC 上枚举失败的原因?
  3. 在设备描述符和元数据不断变化的阶段,(Windows) PC 端测试/开发 USB 设备固件的最佳做法是什么?是否可以避免为了避免 Windows 缓存而吞噬 PID?

详情

由于 Windows 从以前的枚举中缓存 USB 描述符等的方式,在固件开发过程中,每次我进行其他更改后,我都会在固件中递增设备产品 ID (PID),以确保 Windows 不是缓存描述符先前迭代的内容,并弄乱本来可以工作的内容。

现在,我已将设备作为 WinUSB 设备在 Windows 7、8 和 10 PC 上成功枚举,并且已建立通信。但是,当我将固件更改回使用我开始使用的 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 Box 虚拟机。我不确定那里发生了什么。

Error enumerating shown in Device Manager

Device Manager Code 28 - no compatible drivers

Device Driver properties

最佳答案

尝试删除以下形式的所有相关注册表项:

HLKM\SYSTEM\CurrentControlSet\Control\UsbFlags\vvvvpppprrrrr

MSDN 文章 Microsoft OS Descriptors for USB Devices说:

The operating system creates a registry entry, named osvc, under this registry key that indicates whether the device supports Microsoft OS Descriptors. If the device does not provide a valid response the first time that the operating system queries it for a Microsoft OS String Descriptor, the operating system will make no further requests for that descriptor.

关于Windows 10 - 清除 USB 枚举/驱动程序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41644081/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com