16. Шинные драйверы WDM

 

Шинные драйверы WDM

Управление электропитанием и Plug and Play осуществляется при помощи шинных драйверов WDM, которые представляют собой стандартные драйверы WDM. Обратите внимание, что в этом контексте любое устройство, начиная с которого происходит перечисление других устройств, будет называться шиной. Шинный драйвер отвечает на пакеты запроса ввода/вывода (IRP) и может быть расширен за счет использования драйверов фильтров. Шинный драйвер выполняет следующие задачи: П Перечисление (enumeration) устройств на шине

Динамическое извещение операционной системы о событиях на шине
Ответы на IRP от систем Plug and Play и управления электропитанием
Мультиплексирование доступа к шине (для некоторых шин)
Общее администрирование устройств на шине

В процессе перечисления драйвер шины идентифицирует устройства на своей шине и создает для них объекты устройств. Метод, с помощью которого драйвер идентифицирует устройства на шине, зависит от конкретной шины. Шинный драйвер выполняет некоторые операции от имени устройств, находящихся на его шине, но обычно не обрабатывает операции чтения и записи на устройства, находящиеся на шине. (Эти операции обрабатываются функциональным драйвером.) Драйвер шины выступает в роли функционального драйвера для своего контроллера, адаптера, моста или другого устройства.

Microsoft поставляет шинные драйверы для большинства распространенных шин, в том числе: PCI, Plug and Play ISA, SCSI, и USB. Прочие шинные драйверы могут поставляться независимыми поставщиками — IHV или OEM. Шинный драйвер может быть реализован как пара драйвер/мини-драйвер. В таких парах драйверов один из драйверов связан со вторым, а второй представляет собой DLL.

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