Index: /trunk/include/VBox/vusb.h
===================================================================
--- /trunk/include/VBox/vusb.h	(revision 53976)
+++ /trunk/include/VBox/vusb.h	(revision 53977)
@@ -70,4 +70,5 @@
 #define VUSB_DT_INTERFACE_MIN_LEN       9
 #define VUSB_DT_ENDPOINT_MIN_LEN        7
+#define VUSB_DT_SSEP_COMPANION_MIN_LEN  6
 /** @} */
 
@@ -399,8 +400,13 @@
     /** Pointer to additional descriptor bytes following what's covered by VUSBDESCENDPOINT. */
     const void *pvMore;
-    /** Pointer to additional class- or vendor-specific interface descriptors. */
+    /** Pointer to additional class- or vendor-specific endpoint descriptors. */
     const void *pvClass;
     /** Size of class- or vendor-specific descriptors. */
     uint16_t cbClass;
+    /** Pointer to SuperSpeed endpoint companion descriptor (SS endpoints only). */
+    const void *pvSsepc;
+    /** Size of SuperSpeed endpoint companion descriptor.
+     * @remark Must be non-zero for SuperSpeed endpoints. */
+    uint16_t cbSsepc;
 } VUSBDESCENDPOINTEX;
 /** Pointer to a parsed USB endpoint descriptor. */
Index: /trunk/src/VBox/Devices/Storage/UsbMsd.cpp
===================================================================
--- /trunk/src/VBox/Devices/Storage/UsbMsd.cpp	(revision 53976)
+++ /trunk/src/VBox/Devices/Storage/UsbMsd.cpp	(revision 53977)
@@ -291,5 +291,7 @@
         /* .pvMore = */     NULL,
         /* .pvClass = */    NULL,
-        /* .cbClass = */    0
+        /* .cbClass = */    0,
+        /* .pvSsepc = */    NULL,
+        /* .cbSsepc = */    0
     },
     {
@@ -304,5 +306,7 @@
         /* .pvMore = */     NULL,
         /* .pvClass = */    NULL,
-        /* .cbClass = */    0
+        /* .cbClass = */    0,
+        /* .pvSsepc = */    NULL,
+        /* .cbSsepc = */    0
     }
 };
@@ -321,5 +325,7 @@
         /* .pvMore = */     NULL,
         /* .pvClass = */    NULL,
-        /* .cbClass = */    0
+        /* .cbClass = */    0,
+        /* .pvSsepc = */    NULL,
+        /* .cbSsepc = */    0
     },
     {
@@ -334,5 +340,7 @@
         /* .pvMore = */     NULL,
         /* .pvClass = */    NULL,
-        /* .cbClass = */    0
+        /* .cbClass = */    0,
+        /* .pvSsepc = */    NULL,
+        /* .cbSsepc = */    0
     }
 };
@@ -359,6 +367,8 @@
         },
         /* .pvMore = */     NULL,
-        /* .pvClass = */    &g_aUsbMsdEpCompanionSS,
-        /* .cbClass = */    sizeof(g_aUsbMsdEpCompanionSS)
+        /* .pvClass = */    NULL,
+        /* .cbClass = */    0,
+        /* .pvSsepc = */    &g_aUsbMsdEpCompanionSS,
+        /* .cbSsepc = */    sizeof(g_aUsbMsdEpCompanionSS)
     },
     {
@@ -372,6 +382,8 @@
         },
         /* .pvMore = */     NULL,
-        /* .pvClass = */    &g_aUsbMsdEpCompanionSS,
-        /* .cbClass = */    sizeof(g_aUsbMsdEpCompanionSS)
+        /* .pvClass = */    NULL,
+        /* .cbClass = */    0,
+        /* .pvSsepc = */    &g_aUsbMsdEpCompanionSS,
+        /* .cbSsepc = */    sizeof(g_aUsbMsdEpCompanionSS)
     }
 };
Index: /trunk/src/VBox/Devices/USB/VUSBDevice.cpp
===================================================================
--- /trunk/src/VBox/Devices/USB/VUSBDevice.cpp	(revision 53976)
+++ /trunk/src/VBox/Devices/USB/VUSBDevice.cpp	(revision 53977)
@@ -738,4 +738,5 @@
             {
                 cbTotal += pIf->paSettings[j].paEndpoints[k].Core.bLength;
+                cbTotal += pIf->paSettings[j].paEndpoints[k].cbSsepc;
                 cbTotal += pIf->paSettings[j].paEndpoints[k].cbClass;
             }
@@ -776,4 +777,5 @@
                 COPY_DATA(pbBuf, cbLeft, &EndPtDesc, VUSB_DT_ENDPOINT_MIN_LEN);
                 COPY_DATA(pbBuf, cbLeft, pIfDesc->paEndpoints[k].pvMore, EndPtDesc.bLength - VUSB_DT_ENDPOINT_MIN_LEN);
+                COPY_DATA(pbBuf, cbLeft, pIfDesc->paEndpoints[k].pvSsepc, pIfDesc->paEndpoints[k].cbSsepc);
                 COPY_DATA(pbBuf, cbLeft, pIfDesc->paEndpoints[k].pvClass, pIfDesc->paEndpoints[k].cbClass);
             }
