重新枚举USB设备,通过描述符的更改从旧设备升级到新固件

Ram*_*mHS 5 windows embedded usb enumeration usb-descriptor

如果我将USB设备连接到主机,然后使用新固件升级USB设备,并更改设备的描述符.主机将使用旧描述符.

我知道我可以通过删除设备等的Windows初始化驱动程序来强制设备重新枚举自己.或者我可以在描述符中碰撞ProductId并且设备将重新枚举.

Windows兑现了有关设备等的信息,因此Windows永远不会要求设备在重新连接有关接口,配置,端点,HID描述符等时再次提供信息.

在此输入图像描述

idProduct - 更改此设置将重新枚举设备,因为Windows会认为它是一个不同的设备.

iSerialNumber - 更改此项将重新枚举,因为Windows需要区分两个相同的idProducts(两个相同的产品连接)

bcdDevice - 应该执行重新枚举的技巧,但它不能像USB规范中那样工作.

我的问题是如何在不删除驱动程序等或更改idProduct或iSerialNumber的情况下强制重新枚举USB设备?

任何帮助将不胜感激...

Ram*_*mHS 1

解决方案是在需要重新枚举时附加到 iSerial。如果更改 PID 行不通,那么这是唯一的解决方案。

当附加 iSerial 时,例如从 000000xx -> 000000yy,Windows 会将 USB 设备视为新设备并重新启动驱动程序等。