Поделиться через


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

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

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

  • Драйвер функции управляет отдельным устройством.

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

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

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

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

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

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

Драйвера на предыдущем рисунке делятся на следующие типы:

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

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

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

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

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

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

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

Водители шины

Драйверы функций

Фильтры драйверов

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