I have some HID firmware and a Windows HidDemo EXE in source from ST Micro, which work together perfectly on my hardware. The Report Descriptor table includes OUTPUTS (3 LEDs on one endpoint) and INPUTs (3 board keys on another endpoint). My the first task is to add another key INPUT.
Looking through "USB Complete (4th Ed)" I see and understand the global item types. It's simple enough to add another key INPUT section, based on the existing entries. The size of the Report Descriptor table is adjusted according to the new report table size (211 from 191 bytes).
With the original f/w, the Windows EXE calls SetupDiEnumDeviceInterfaces successfully. With the new f/w, the device appears to Windows (seemingly) correctly according to several USB utiliies I have, but the call to SetupDiEnumDeviceInterfaces fails (error 259, "No more Information").
It seems to me that
a) perhaps the additional report count has to be stored somewhere else. I have looked in all the related f/w sources, but cannot see anything obvious; or/and
b) the enumeration is failing because something is wrong with the Report Descriptor table
If I understand correctly, adding another report does not need another EndPoint, as the number of reports is obtained when the Report Descriptor is parsed/queried (via the call to SetupDiEnumDeviceInterfaces ?).
I'm at a loss where to look next. Can you suggest what might be the problem here?