Got a little question about the enumeration process in WinXP. I have a USB design and have noted the following;1) 1st packet received is a get_descriptor and it's requesting 64 bytes of the device_descriptor. 2) 2nd packet received is a get_descriptor and it's looking for 18 bytes. 3) 3rd packet is a get_descriptor and is looking for 9 bytes of the configuration_descriptor. 4) 4th packet is a get_decriptor and it's looking for 255 bytes of the config_desc. I understand that this process is typical for WinXP, but in step 4, should I reply with a 255 bytes packet that contains the config_descriptor and all subsequent desciptors that follow (interface & endpoints), or just 32 bytes (which is the length of the 4 descriptors in question)?
Moving on, it then asks for a 255 bytes of the string_descriptor with index
- This is the LANGID. Again, should I reply with a 255 packet (valid data + loads of garbage), or just the 4 bytes required to specify a single language?
WinXP never asks for a string_desc with an index other than 0. Even if I specify strings in the device and config descriptors, WinXP will never ask for them (but it does make several requests for the LANGID).
I can verify that the device_desc is returned to the host ok, as I can see the registry entries update (with the corerct vendor & product IDs).
I'm pretty stuck here without any of your valuable feedback. TIA.