Индификаторы USB устройств

Тема в разделе "WASM.ELECTRONICS", создана пользователем al79, 22 май 2007.

  1. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Привет всем.
    Решил тут занятся изучением программироавния 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 устройство"?
     
  2. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    Multifunction device

    Посмотри книгу Walter Oney "Programming the Microsoft WDM", там целая глава им посвящена
     
  3. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    MI_XX - это Multifunction device Interface
    У USB устройства может быть несколько интерфейсов.
    У меня например в фотопринтер кардридер встроен.
    Т.е. физически к шине подключено одно устройство, а логически их два.
    Используется как обычно - во всех запросах USB есть поле для указания номера интерфейса.
     
  4. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    А это случайно не конечные точки USB устройства?
     
  5. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Нет.
    Это логическая совокупность конечных точек.
    Расскажу на примере принтера с встроенным кардридером.
    Получается так
    Код (Text):
    1. USB Device
    2.  -Printer Interface
    3.     -Bulk out endpoint
    4.  -Mass Storage Interface
    5.     -Bulk out endpoint
    6.     -Bulk in endpoint
    7.     -Interrupt endpoint
    Ну это так - для примера.
    Ясно что у разных устройств разные интерфейсы и наборы конечных точек будут.
    Кстати у НЕ многофункционального устройства принцип тот же - просто у него только один интерфейс.
     
  6. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Спасибо cppasm

    Подставил свой драйвер вместо "Составного USB устройства", пока удалось определить, что устройство имеет 5 интерфейсов. Первые два имеют по 2 конечные точки, остальные три по 1 точке, вот опять смущает почему тогда WIN-да видит только 3 устройства, ведь интерфесов 5?
     
  7. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Не знаю, это уже надо дескрипторы смотреть...
     
  8. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Код (Text):
    1. почему тогда WIN-да видит только 3 устройства, ведь интерфесов 5?
    Здесь разобрался, оказывается интерфейсы с одиноковым Class и SubClass, Win-да собирает в одно устройство с несколькими интерфейсами.