Windows 使用描述符中的更改重新枚举从旧固件升级到新固件的USB设备

Windows 使用描述符中的更改重新枚举从旧固件升级到新固件的USB设备,windows,embedded,usb,enumeration,usb-descriptor,Windows,Embedded,Usb,Enumeration,Usb Descriptor,如果我将USB设备连接到主机,然后使用新固件升级USB设备,并更改设备描述符。主机将使用旧的描述符 我知道我可以通过删除设备的Windows初始化驱动程序等方式强制设备重新枚举自身。或者我可以在描述符中碰撞ProductId,设备将重新枚举 Windows会兑现有关设备等的信息,因此Windows不会再次要求设备提供有关接口、配置、端点、HID描述符等重新连接的信息 idProduct-更改此选项将重新枚举设备,因为windows会认为它是不同的设备 iSerialNumber-更改此项将重新

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

我知道我可以通过删除设备的Windows初始化驱动程序等方式强制设备重新枚举自身。或者我可以在描述符中碰撞ProductId,设备将重新枚举

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

idProduct-更改此选项将重新枚举设备,因为windows会认为它是不同的设备

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

bcdDevice-应该执行重新枚举的技巧,但它没有按照USB规范中的规定工作

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


非常感谢您的帮助……

您是否已检查WdfusbTargetDeviceSetPortSynchronously方法?它将允许您重置端口,它可能会在不重新枚举所有内容的情况下回答您的问题。您有编辑固件的选项吗?禁用USB上拉几百毫秒就可以了。@LéoD。我很确定它不会使设备重新枚举“在成功重置操作后,总线驱动程序会重新选择设备在重置操作发生之前的配置和任何备用接口设置。”@DavidGrayson我可以试试,但根据USB规范,我不确定这是否能解决问题。你自己试过吗?是的,我试过。如果您禁用该上拉功能,USB主机将看到该设备已断开连接,因此它必须在之后重新计算该设备,原因与您拔出并重新插入该设备或其他设备时,它将枚举该设备相同。