Уровни драйвера WDM: пример

В этом разделе описывается возможный набор драйверов WDM для оборудования USB для демонстрации уровней драйверов WDM.

На следующем рисунке показан пример конфигурации оборудования PnP для USB-джойстика.

схема, иллюстрирующая пример оборудования plug and play для usb-джойстика.

На этом рисунке usb-джойстик подключается к порту USB-концентратора. USB-концентратор в этом примере находится на плате хост-контроллера USB и подключается к одному порту на плате контроллера узла USB. Хост-контроллер USB подключается к шине PCI. С точки зрения PnP USB-концентратор, хост-контроллер USB и шина PCI являются шинами, так как они предоставляют порты. Джойстик не является устройством шины.

На следующем рисунке показан пример набора драйверов, которые могут быть загружены для usb-джойстика на предыдущем рисунке.

схема, иллюстрирующая пример уровней драйвера plug and play для usb-джойстика.

Начиная с нижней части предыдущего рисунка, в стеке примера используются следующие драйверы:

  • Драйвер PCI, который управляет шиной PCI. Это водитель автобуса PnP. Драйвер шины PCI предоставляется вместе с системой корпорацией Майкрософт.

  • Драйвер шины для хост-контроллера USB реализуется в виде пары драйверов класса/миникласса. Класс контроллера узла USB и драйверы мини-класса предоставляются вместе с системой корпорацией Майкрософт.

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

  • Три драйвера для джойстика; один из них — пара "класс/миникласс".

    Драйвер функции, main драйвер для джойстика, — это пара драйверов класса HID/HID USB miniclass. (HID представляет собой "Устройство человеческого интерфейса".) Драйвер мини-класса HID USB поддерживает семантику устройств HID, относяющуюся к USB, при этом для общей поддержки HID используется библиотека DLL драйвера класса HID.

    Драйвер функции может быть специфичным для конкретного устройства или, как и в случае с HID, драйвер функции может обслуживать группу устройств. В этом примере пара драйвер класса HID/драйвер мини-класса HID USB обслуживает любое устройство, совместимое с HID, в системе на USB-шине. Пара драйверов класса HID/HID 1394 miniclass будет обслуживать любое устройство, совместимое с HID, на шине 1394.

    Драйвер функции может быть написан поставщиком устройства или корпорацией Майкрософт. В этом примере драйвер функции (пара драйверов класса HID/HID usb miniclass) написан корпорацией Майкрософт.

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

    Фильтр верхнего уровня написан пользователем, которому необходимо отфильтровать джойстик ввода-вывода, а драйвер фильтра нижнего уровня — поставщиком джойстика.

  • Клиенты HID в режиме ядра и пользовательском режиме и приложение не являются драйверами, но отображаются для полноты.