USB enumeration is partly dependent on the usbd driver and partly dependent on the functional driver. I've seen win98/win2k/winxp/wince enumerations and they all differ from each other. You should code your firmware to be able to handle all USB enumeration requests, and not try to enumerate them in a particular sequence.