Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000377.doc
Скачиваний:
29
Добавлен:
30.04.2022
Размер:
2.52 Mб
Скачать

3.1. Классификаций драйверов Windows

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

Рис.15. Упрощенная классификация драйверов Windows

Драйверы пользовательского режима

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

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

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

VDM перехватывает попытки обращения исполняемой программы к портам ввода-вывода или регистрам, отображенным на адресное пространство памяти, и передает эти обращения драйверу VDD. Драйвер VDD переадресует полученные запросы драйверам режима ядра, используя системный вызов DeviceIoControl, как показано на рис. 16.

Драйверы VDD регистрируются в реестре в разделе VirtualDeviceDrivers:

HKLM\SYSTEM\CurrentControlSet\Control\ VirtualDeviceDrivers

В указанном разделе реестра хранится параметр VDD, хранящий полный путь и имя каждого параметра в виде текстовой строки, разделенной нулями.

Драйверы принтеров принимают на вход задания для печати в виде последовательности аппаратно независимых команд языков печати PS или PCL и переводят их в инструкции соответствующего принтера. Принтеры подключаются к компьютеру по каналам LPT, USB или по локальной вычислительной сети. При этом передачей потока команд от драйвера принтера к принтеру занимаются драйверы LPT, USB или сетевых адаптеров, в зависимости от подключения.

Рис.16. Драйвер виртуального устройства DOS

Драйверы режима ядра

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

Интерфейс унаследованных драйверов не поддерживает PnP и управление питанием. Он предназначен для обеспечения совместимости новых версий Windows с драйверами от Windows NT версии 3.

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

Графические драйверы предназначены для отображения графической информации на экране монитора. Существует два класса графических драйверов: драйверы дисплея и минипорт-драйверы видеоадаптера.

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

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

Windows реализует собственную сетевую среду, известную как NDIS – Network Drivers Interface Specifications. Далее мы рассмотрим организацию и работу NDIS более детально.

Драйверы WDM – Windows Driver Model являются основным (базовым) типом драйверов устройств в Windows. В класс WDM попадают драйверы шин, функциональные драйверы и драйверы фильтров.

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

Функциональные драйверы обеспечивают управление устройствами, подключенными к шинам. Функциональные драйверы взаимодействуют со своими устройствами через аппаратно-независимый интерфейс, предоставленный драйвером шины. Функциональные драйверы обеспечивают для вышележащих компонентов операционной системы аппаратно-независимый интерфейс к контролируемым ими устройствам в терминах записать-прочитать данные. Кроме того, функциональные драйверы реализуют управляющий интерфейс (доступен через системный вызов DeviceIoControl), позволяющий управлять устройствами определенного класса в терминах единой для этого класса устройств системы команд. В качестве примеров классов устройств могут быть названы: беспроводные сетевые адаптеры, стримеры, устройства долговременной памяти с произвольным доступом, клавиатуры, и т.п. Безусловна, система команд должна быть различной для устройств различного класса, но в рамках одного класса устройств команды не зависят от конкретной реализации устройства, его модели, модификации, производителя.

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

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

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

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

Если для некоторого функционального драйвера указаны фильтры нижнего уровня, то эти драйверы фильтров низкого уровня будут загружены диспетчером PnP до загрузки функционального драйвера устройства.

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

Например, фильтр верхнего уровня для драйвера клавиатуры может проверять дополнительный пароль, блокируя работу клавиатуры, если пароль введен неверно.

Если для некоторого функционального драйвера указаны фильтры верхнего уровня, то эти драйверы фильтров верхнего уровня будут загружены диспетчером PnP после загрузки функционального драйвера устройства.