Иллюстрированный самоучитель по Microsoft Windows 2003

Интерфейс WDM для Plug and Play. Типы драйверов.

Система ввода/вывода предоставляет уровневую архитектуру драйверов. В данном разделе обсуждаются типы драйверов WDM, уровни драйверов и объекты устройств. Более подробную информацию по данному вопросу можно найти в файлах сопроводительной документации к последней версии Windows DDK.


С точки зрения системы Plug and Play существуют следующие три типа драйверов.

  • Шинный драйвер обслуживает контроллер шины, адаптер, мост или любое устройство, которое имеет дочерние устройства. Шинные драйверы относятся к обязательным драйверам и обычно поставляются Microsoft. Для каждого типа шины в системе имеется собственный шинный драйвер.
  • Функциональный драйвер – это основной драйвер устройства, который предоставляет интерфейс с этим устройством. Этот драйвер является обязательным, за исключением случаев, когда ввод/вывод устройства осуществляется шинным драйвером или любыми драйверами фильтра. Функциональный драйвер устройства обычно реализуется в виде пары драйвер/мини-драйвер. В таких парах драйверов драйвер класса (обычно разрабатываемый Microsoft) обеспечивает функциональные возможности, необходимые всем устройствам этого типа, а мини-драйвер (обычно разрабатываемый фирмой – поставщиком конкретного устройства) обеспечивает специфические функциональные особенности устройства. Plug and Play Manager загружает по одному функциональному драйверу для каждого устройства.
  • Драйвер фильтра сортирует запросы ввода/вывода для шины, устройства или класса устройств. Драйверы фильтра являются необязательными и могут существовать в любом количестве, располагаясь на различных уровнях – как выше, так и ниже функционального драйвера и шинного драйвера. Обычно такие драйверы поставляются фирмами OEM или независимыми поставщиками аппаратных средств (IHV).

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

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

Уровни драйверов

Для каждого конкретного устройства существует два или более уровней драйвера: шинный драйвер для шины ввода/вывода (или Plug and Play Manager – для устройств, помещенных при энумерации на корневой уровень) и функциональный драйвер устройства. Помимо этого, могут присутствовать один или несколько драйверов фильтра для шины или устройства.

Объекты устройств

Драйвер создает объект устройства (device object) для каждого устройства, которым он управляет. Объект устройства представляет устройство для драйвера. С точки зрения Plug and Play, существуют три типа объектов устройств.

  • Физические объекты устройств (Physical Device Objects, PDO).
  • Функциональные объекты устройств (Functional Device Objects, FDO).
  • Объекты фильтров устройств

PDO представляют устройство на шине; каждый интерфейс прикладного программирования Plug and Play API, который ссылается на устройство, ссылается на PDO. FDO представляют функциональные возможности устройства функциональному драйверу. Объекты фильтров представляют драйвер фильтра. Эти три типа объектов устройств имеют тип DEVICE_OBJECT, но используются по-разному и могут иметь дополнительные расширения.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.