-                       USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length. */
-                       uint8_t                 Subtype; /**< Sub type value used to distinguish between CDC class-specific descriptors. */
-                       uint8_t                 Capabilities; /**< Capabilities of the ACM interface, given as a bit mask. */
-               } USB_Descriptor_CDC_FunctionalACM_t;
-               
-               /** Type define for a CDC class-specific functional Union descriptor. This indicates to the host that specific
-                *  CDC control and data interfaces are related. See the CDC class specification for more details.
+                       USB_Descriptor_Configuration_Header_t Config;
+
+                       // RNDIS CDC Control Interface
+                       USB_Descriptor_Interface_t            CDC_CCI_Interface;
+                       USB_CDC_Descriptor_FunctionalHeader_t CDC_Functional_Header;
+                       USB_CDC_Descriptor_FunctionalACM_t    CDC_Functional_ACM;
+                       USB_CDC_Descriptor_FunctionalUnion_t  CDC_Functional_Union;
+                       USB_Descriptor_Endpoint_t             CDC_NotificationEndpoint;
+
+                       // RNDIS CDC Data Interface
+                       USB_Descriptor_Interface_t            CDC_DCI_Interface;
+                       USB_Descriptor_Endpoint_t             RNDIS_DataOutEndpoint;
+                       USB_Descriptor_Endpoint_t             RNDIS_DataInEndpoint;
+               } USB_Descriptor_Configuration_t;
+
+               /** Enum for the device interface descriptor IDs within the device. Each interface descriptor
+                *  should have a unique ID index associated with it, which can be used to refer to the
+                *  interface from other descriptors.