I am very grateful for the USB help given here by Jan Axelson.
My question is about the Microsoft OS 1.0 String Descriptors. There is a disparity between the Microsoft specification, and the Axelson posted file "ms_os_10_descriptors.c. Specifically, there are two extra bytes in the Axelson file, that are not in the Microsoft spec. For convenience, I here highlight them in red. Axelson may well be correct, (and the Microsoft spec merely a misprint), but I am seeking clarification on this point. Thank you for your help.
From the posted file "ms_os_10_descriptors.c"
// Microsoft Extended Compat ID OS feature descriptor
UCHAR ms_extended_compat_id_os_feature_descriptor[0x2a] =
{
0x2a, 0x00, 0x00, 0x00, // Descriptor size (42 bytes)
0x00, 0x01, // Descriptor version number (1.00)
0x04, 0x00, // Extended Compat ID OS descriptor identifier
0x01, 0x00, // Number of custom property sections that follow
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Reserved
0x00, // bInterfaceNumber of the WinUSB interface
0x01, // Reserved, set to 0x01
0x57, 0x49, 0x4E, 0x55, 0x53, 0x42, 0x00, 0x00, // WINUSB ID
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Secondary ID
0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Reserved