Привет всем. Решил тут занятся изучением программироавния USB устройств по книге Агурова. Устройство для мучения выбрал аппарат Siemens OptiPoint 500 Standart. Но вот проблема, при включении этого устройства, Windows сразу же ставит по его ID (VID_0681&PID_000F) свой дравер "Составное USB устройство" и после этого появляется три устройства со следущими индификаторами VID_0681&PID_000F&MI_00, VID_0681&PID_000F&MI_01 и VID_0681&PID_000F&MI_02. Вот ни где не могу найти, что это за MI_00 на конце и как с ним работать? И что это такое "сосотавное USB устройство"?
Multifunction device Посмотри книгу Walter Oney "Programming the Microsoft WDM", там целая глава им посвящена
MI_XX - это Multifunction device Interface У USB устройства может быть несколько интерфейсов. У меня например в фотопринтер кардридер встроен. Т.е. физически к шине подключено одно устройство, а логически их два. Используется как обычно - во всех запросах USB есть поле для указания номера интерфейса.
Нет. Это логическая совокупность конечных точек. Расскажу на примере принтера с встроенным кардридером. Получается так Код (Text): USB Device -Printer Interface -Bulk out endpoint -Mass Storage Interface -Bulk out endpoint -Bulk in endpoint -Interrupt endpoint Ну это так - для примера. Ясно что у разных устройств разные интерфейсы и наборы конечных точек будут. Кстати у НЕ многофункционального устройства принцип тот же - просто у него только один интерфейс.
Спасибо cppasm Подставил свой драйвер вместо "Составного USB устройства", пока удалось определить, что устройство имеет 5 интерфейсов. Первые два имеют по 2 конечные точки, остальные три по 1 точке, вот опять смущает почему тогда WIN-да видит только 3 устройства, ведь интерфесов 5?
Код (Text): почему тогда WIN-да видит только 3 устройства, ведь интерфесов 5? Здесь разобрался, оказывается интерфейсы с одиноковым Class и SubClass, Win-да собирает в одно устройство с несколькими интерфейсами.