Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000210.doc
Скачиваний:
25
Добавлен:
30.04.2022
Размер:
909.82 Кб
Скачать

2.4. Программное обеспечение и драйвер устройства

2.4.1. Система Plug and Play

Каждое USB-устройство, спроектированное по спецификации Plug and Play (PnP), должно иметь идентификатор, который однозначно определяет модель данного уст­ройства. Этот идентификатор должен быть предоставлен шинному аппарат­ному обеспечению и, соответственно, шинному драйверу при поступлении запроса [23]. Секция описания модели содержит поле hwid, играющее роль идентификатора модели.

Идентификатор устройства должен иметь строго определенный для данного класса устройств формат. Для USB-устройств идентификатор имеет сле­дующий формат:

USB\Vid_ww&Pid_ddddSRev_rr

Здесь ww — идентификатор поставщика (поле idvendor дескриптора уст­ройства, зарегистрированный в Комитете USB-производителей; dddd — идентификатор, присвоенный производителем данный моде­ли USB-устройства (поле idProduct); rr — номер версии разработки. Все эти поля вводятся как шестнадцатеричные числа.

В INF-файле допустимо указывать усеченные варианты идентификаторов, например:

USB\Vid_ww&Pid_dddd

USB\Class_cc&SubClass_ss_Prot_pp

USB\Class_cc&SubClass_ss USB\Class_cc

Здесь ее — код базового класса из полученного дескриптора устройства или дескриптора интерфейса данного USВ-устройства; ss — код подкласса; рр — идентификатор протокола.

Примеры USB-идентификаторов:

  • usb\vid_040a&pid_oioo — цифровая USB-камера Kodak;

  • usb\root_hub20 — USB-хаб;

- usb\vid_067bspid_2303 — USB-мобильный телефон.

2.4.2. Модель wdm

WDM (Windows Driver Model, драйверная модель Windows) — новая модель архитектуры драйверов, предложенная Microsoft для Windows 2000. Конечно, эта архитектура развивалась начиная с Windows 3.11, продолжала развивать­ся в Windows 98 и Windows NT, но по-настоящему полной она стала только в Windows 2000.

Архитектура WDM позволяет распределить процесс передачи данных (рис. 2.13).

С точки зрения WDM, существуют три типа драйверов.

  • Драйвер шины (bus driver), обслуживающий контроллер шины, адаптер, мост или любые другие устройства, имеющие дочерние устройства. Драй­веры шин нужны для работы системы и в общем случае поставляются Microsoft. Для каждого типа шины (PCI, PCMCIA и USB) в системе име­ется свой драйвер. Сторонние разработчики создают драйверы для под­держки новых шин, например, для VMEbus, Multibus или Futurebus.

  • Функциональный драйвер (function driver) — основной драйвер устройства, предоставляющий его функциональный интерфейс. Обязателен кроме тех случаев, когда устройство используется без драйверов (т. е. ввод/вывод осуществляется драйвером шины или драйвером фильтров шины). Функциональный драйвер по определению обладает наиболее полной инфор­мацией о своем устройстве. Обычно только этот драйвер имеет доступ к специфическим регистрам устройства.

Рис. 2.13. WDM-модель для USB-интерфейса

  • Драйвер фильтра (filter driver), поддерживающий дополнительную функ­циональность устройства (или существующего драйвера) или изменяю­щий запросы на ввод/вывод и ответы на них от других драйверов (это часто используется для коррекции устройств, предоставляющих неверную информацию о своих требованиях к аппаратным ресурсам). Такие драй­веры не обязательны и их может быть несколько. Они могут работать как на более высоком уровне, чем функциональный драйвер или драйвер шины, так и на более низком. Обычно эти драйверы предоставляются производителями или независимыми поставщиками оборудования.

Согласно типам драйверов, существуют три типа объектов:

  • объекты физических устройств (PDO, Physical Device Object);

  • объекты функциональных устройств (FDO, Functional Device Object);

  • объекты фильтров устройств (FiDO, Filter Device Object).

Объекты PDO создаются для каждого физически идентифицируемого эле­мента аппаратуры, подключенного к шине данных. Объект FDO подразуме­вает единицу логической функциональности устройства. Объекты фильтров предоставляют дополнительную функциональность.

В среде WDM один драйвер не может контролировать все аспекты устрой­ства: драйвер шины информирует диспетчер РпР об устройствах, подключенных к шине, в то время как функциональный драйвер управляет устрой­ством. Драйверы фильтров низкого уровня позволяют исправлять информа­цию о требованиях устройства к системным ресурсам, а драйверы фильтров высокого уровня добавляют устройству дополнительную функциональность (например, производят дополнительную защиту клавиатуры).

В поставку Windows входят два низкоуровневых драйвера, избавляя про­граммиста от множества рутинной работы:

  • драйвер хоста отвечает за обмен данными с аппаратурой;

  • драйвер шины USB отвечает за управление транзакциями, питанием и распознавание устройств.

С точки зрения прикладного программиста, наибольший интерес представ­ляют драйвер класса (class driver) и интерфейс обращения к этому драйверу. Здесь операционная система Windows делает еще один шаг на пути унифи­кации интерфейсов. Все USB-устройства делятся на группы, согласно об­щим свойствам, выполняемым функциям и требованиям к ресурсам [23,24,25].