-               /* Descriptor not found, error out */
-               return NoHIDDescriptorFound;
-       }
+               /* See if we've found a likely compatible interface, and if there is an endpoint within that interface */
+               if (!(HIDInterface) ||
+                   USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
+                                             DComp_NextKeyboardInterfaceDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)
+               {
+                       /* Get the next HID interface from the configuration descriptor */
+                       if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
+                                                                                 DComp_NextKeyboardInterface) != DESCRIPTOR_SEARCH_COMP_Found)
+                       {
+                               /* Descriptor not found, error out */
+                               return NoCompatibleInterfaceFound;
+                       }
+                       
+                       /* Save the interface in case we need to refer back to it later */
+                       HIDInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);