Уровни драйвера WDM: пример
В этом разделе описывается возможный набор драйверов WDM для оборудования USB для демонстрации уровней драйверов WDM.
На следующем рисунке показан пример конфигурации оборудования PnP для USB-джойстика.
На этом рисунке usb-джойстик подключается к порту USB-концентратора. USB-концентратор в этом примере находится на плате хост-контроллера USB и подключается к одному порту на плате контроллера узла USB. Хост-контроллер USB подключается к шине PCI. С точки зрения PnP USB-концентратор, хост-контроллер USB и шина PCI являются шинами, так как они предоставляют порты. Джойстик не является устройством шины.
На следующем рисунке показан пример набора драйверов, которые могут быть загружены для 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 в режиме ядра и пользовательском режиме и приложение не являются драйверами, но отображаются для полноты.