Hello,
I am working on a driver for a virtual USB device and virtual host controller. The sample that I am using contains a simple Configuration Descriptor that defines a single interface and a few endpoints.
That configuration descriptor works fine.
I have attempted to replace that working descriptor with a HID Configuration Descriptor that I found in Jan Axelson’s book “USB Complete”.
The WinDbg log shows that things are fine until WdfUsbTargetDeviceSelectConfig executes in the host controller. It returns STATUS_INSUFFICIENT_RESOURCES each time.
I know that the descriptor is fine because USBD_ValidateConfigurationDescriptor shows no errors.
Below I have included the configuration and HID report descriptor for reference.
Do you have any suggestions?
const UCHAR g_UsbConfigDescriptorSet[0x29] =
{
// Configuration
0x09,
0x02,
0x29, 0x00,
0x01,
0x01,
0x00,
0xa0,
0x32,
// Interface
0x09,
0x04,
0x00,
0x00,
0x02,
0x03,
0x00,
0x00,
0x00,
// HID Class Descriptor
0x09,
0x21,
0x10, 0x01,
0x00,
0x01,
0x22,
0x2f, 0x00,
// Interrupt IN EP
0x07,
0x05,
0x81,
0x03,
0x40, 0x00,
0x0a,
// Interrupt OUT EP
0x07,
0x05,
0x01,
0x03,
0x40, 0x00,
0x0a,
}
The HID report descriptor is:
const UCHAR CrestronDspHidReportDescriptor[0x2f] =
{
0x06, 0xa0, 0xff,
0x09, 0x01,
0xa1, 0x01,
0x09, 0x03,
0x15, 0x00,
0x26, 0xff, 0x00,
0x75, 0x08,
0x95, 0x02,
0x81, 0x02,
0x09, 0x04,
0x15, 0x00,
0x26, 0xff, 0x00,
0x75, 0x08,
0x95, 0x02,
0x91, 0x02,
0x09, 0x05,
0x15, 0x00,
0x26, 0xff, 0x00,
0x75, 0x08,
0x95, 0x02,
0xb1, 0x02,
0xc0
};