Типы драйверов WDM

Существует три типа драйверов WDM: водители автобусов, водители-функции и драйверы фильтров.

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

В этом контексте шиной называется любое устройство, к которому подключены другие физические, логические или виртуальные устройства; шина включает традиционные шины, такие как SCSI и PCI, а также параллельные порты, последовательные порты и порты i8042.

Разработчикам драйверов важно понимать различные типы драйверов WDM и знать, какой драйвер они пишут. Например, то, обрабатывает ли драйвер каждый Plug and Play IRP и способ обработки таких irP, зависит от того, какой драйвер записывается (драйвер шины, драйвер функции или драйвер фильтра).

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

схема, иллюстрирующая возможные уровни драйверов.

Каждое устройство обычно имеет драйвер шины для родительской шины ввода-вывода, драйвер функции для устройства и ноль или несколько драйверов фильтров для устройства. Проект драйвера, требующий большого количества драйверов фильтров, не обеспечивает оптимальную производительность.

На предыдущем рисунке приведены следующие факторы:

  1. Водитель автобуса обслуживает контроллер шины, адаптер или мост. Водители автобусов являются обязательными водителями; для каждого типа автобуса на компьютере есть по одному водителю. Корпорация Майкрософт предоставляет водителей автобусов для большинства распространенных автобусов. IHV и изготовители оборудования могут предоставлять других водителей автобусов.

  2. Драйвер фильтра шины обычно добавляет ценность для шины и поставляется корпорацией Майкрософт или изготовителем оборудования системы. Для автобуса может быть любое количество водителей фильтров автобуса.

  3. Драйверы фильтров более низкого уровня обычно изменяют поведение оборудования устройства. Они являются необязательными и обычно предоставляются IHV. Для устройства может быть любое количество драйверов фильтров нижнего уровня.

  4. Драйвер функции — это драйвер main для устройства. Драйвер функции обычно записывается поставщиком устройства и является обязательным (если устройство не используется в необработанном режиме).

  5. Драйверы фильтров верхнего уровня обычно предоставляют дополнительные функции для устройства. Они являются необязательными и обычно предоставляются IHV.

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

В этом разделе