If I connect a USB device to the host and then upgraded the USB device with a new firmware with changes in the Descriptor of the device. The host will use the old descriptor.
I know that I can force the device to re-enumerate itself by deleting Windows initialized driver for the device etc. or I can bump the ProductId in the descriptor and the device will re-enumerate.
Windows cash the information about the device etc. and thereby windows never ask the device to provide the information again on reconnecting about interfaces, configuration, endpoints, HID descriptor etc.
idProduct - changing this will re-enumerate the device because windows will think its a different device.
iSerialNumber - changing this will re-enumerate because windows need to differentiate between two same idProducts (two of same products connected)
bcdDevice - should do the trick of re-enumeration but it's not working as specified in USB specification.
My question is how can I force Re-enumeration of the USB device without deleting drivers etc. or changing idProduct or iSerialNumber?
Any help will be appreciated...