Цитата(Kitsok @ Dec 6 2006, 14:04)

Направьте пожалуйста, запутался.

С этим распутался. Теперь новая мулька.
Хочу иметь Input, Output и Feature репорты. Понятно, что Input и Output будут разбросаны по соответсвующим пайпам (Interrupt IN, Interrupt OUT), надеюсь, что Feature будет бегать по Control Pipe.
Соответственно, в репорт-дескрипторе вписываю Feature точно таким-же образом как и Output:
Код
HID_LOCAL_USAGE+1,0xff,
HID_GLOBAL_LOGICAL_MINIMUM+1, (unsigned char) -128,
HID_GLOBAL_LOGICAL_MAXIMUM+1, (unsigned char) 127,
HID_GLOBAL_REPORT_COUNT+1,0x40,
HID_GLOBAL_REPORT_SIZE+1,0x08,
HID_MAIN_OUTPUT+1,0x00,
HID_LOCAL_USAGE+1,0xff,
HID_GLOBAL_LOGICAL_MINIMUM+1, (unsigned char) -128,
HID_GLOBAL_LOGICAL_MAXIMUM+1, (unsigned char) 127,
HID_GLOBAL_REPORT_COUNT+1,0x08,
HID_GLOBAL_REPORT_SIZE+1,0x08,
HID_MAIN_FEATURE+1,0x00,
Винда устройство определяет, ошибок никаких не выдает, но и запросов на Interrupt IN на Interrupt IN endpoint не выдает.
Т.е. имеется в системе джойстик, но все оси у него в нейтрали, и все кнопки неактивны. При этом через WriteFile output-репорты проходят как и задумано.
Удаляем описание Feature-репорта - джойстиковая часть начинает работать.
Я поставил брейки на STALL, но STALL вызывается только один раз на SET_IDLE. В остальном обмен во время енумерации различается только размером передаваемого репорт-дескриптора, ну и самим дескриптором.
Чего этому виндовому драйверу не хватает для полного счастья? Да, винда - XP SP2.