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

Discussion in 'WASM.ELECTRONICS' started by al79, May 22, 2007.

  1. al79

    al79 Алексей

    Blog Posts:
    0
    Joined:
    May 11, 2006
    Messages:
    133
    Location:
    Екатеринбург
    Привет всем.
    Решил тут занятся изучением программироавния 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

    Blog Posts:
    0
    Joined:
    May 19, 2005
    Messages:
    527
    Multifunction device

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

    cppasm New Member

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

    al79 Алексей

    Blog Posts:
    0
    Joined:
    May 11, 2006
    Messages:
    133
    Location:
    Екатеринбург
    А это случайно не конечные точки USB устройства?
     
  5. cppasm

    cppasm New Member

    Blog Posts:
    0
    Joined:
    Jul 18, 2006
    Messages:
    923
    Нет.
    Это логическая совокупность конечных точек.
    Расскажу на примере принтера с встроенным кардридером.
    Получается так
    Code (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 Алексей

    Blog Posts:
    0
    Joined:
    May 11, 2006
    Messages:
    133
    Location:
    Екатеринбург
    Спасибо cppasm

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

    cppasm New Member

    Blog Posts:
    0
    Joined:
    Jul 18, 2006
    Messages:
    923
    Не знаю, это уже надо дескрипторы смотреть...
     
  8. al79

    al79 Алексей

    Blog Posts:
    0
    Joined:
    May 11, 2006
    Messages:
    133
    Location:
    Екатеринбург
    Code (Text):
    1. почему тогда WIN-да видит только 3 устройства, ведь интерфесов 5?
    Здесь разобрался, оказывается интерфейсы с одиноковым Class и SubClass, Win-да собирает в одно устройство с несколькими интерфейсами.