+/** Microsoft OS Compatibility string descriptor. This is a special string descriptor that Microsoft based OS hosts
+ *  will query at string descriptor ID 0xEE on initial enumeration, to test if the device supports the Microsoft OS
+ *  Compatibility descriptor extensions (used to give the host additional information on the device's general class
+ *  compatibility for driver-less installation).
+ */
+const USB_Descriptor_String_t PROGMEM MSConpatibilityString = USB_STRING_DESCRIPTOR_ARRAY('M','S','F','T','1','0','0', VENDOR_REQUEST_ID_MS_COMPAT);
+
+/** Microsoft OS Compatibility 1.0 descriptor. This is a special descriptor returned by the device on vendor request
+ *  from the host, giving the OS additional compatibility information. This allows the host to automatically install
+ *  the appropriate driver for various devices which share a common USB class (in this case RNDIS, which uses the
+ *  CDC-ACM class usually used by virtual to serial adapters).
+ */
+const USB_Descriptor_MSCompatibility_t PROGMEM MSCompatibilityDescriptor =
+       {
+               .dwLength                   = sizeof(USB_Descriptor_MSCompatibility_t),
+               .bcdVersion                 = VERSION_BCD(1,0,0),
+               .wIndex                     = 4,
+               .bCount                     = 1,
+               .bReserved                  = { 0 },
+               .bFirstInterfaceNumber      = INTERFACE_ID_CDC_CCI,
+               .bReserved2                 = 1, // Must always be 1 according to spec
+               .compatibleID               = "RNDIS",
+               .subCompatibleID            = "5162001",
+               .bReserved3                 = { 0 },
+       };
+