logo
Разработка драйвера виртуального жесткого диска

1.3 Многослойная архитектура драйверов

Рассмотрим как строится архитектура драйверов. Операционная система Windows® поддерживает многослойную архитектуру драйверов. Каждое устройство обслуживается цепочкой драйверов, называемой стеком драйверов. Каждый драйвер в стеке изолирует аппаратно зависимые возможности от вышестоящего уровня.

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

Рис. 2 Многослойная архитектура драйверов

1. Над стеком находятся приложения. Они обрабатывают запросы пользователя или других приложений и вызывают или подсистему Win 32 или клиент драйвер пользовательского режима.

2. Клиент драйвер пользовательского режима обрабатывает запросы от приложений или от подсистемы Win32. При получении запросов, которые требуют обработки в режиме ядра, он вызывает нужный клиент драйвер режима ядра или процедуру обработки запроса через подсистему Win32. Клиент драйвер реализуются как динамические библиотеки (DLL).

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

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

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

Мини порт-драйвер обрабатывает специфичные операции порт-драйвера.

6. Драйвер аппаратной шины находится в самом низу стека. Microsoft предоставляет эти драйвера для всех шин, как часть операционной системы.