Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
практическая №15.docx
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

1.4 Иерархия устройств и драйверов

Прежде, чем рассматривать процессы функционирования и взаимодействия

драйверов, следует рассмотреть иерархию устройств и драйверов, лежащую в

основе этого взаимодействия. Концепция подобной иерархии достаточно

наглядно представлена на рисунке 1.5 [3].

Рисунок 1.5 – Иерархия объектов устройств и драйверов в модели WDM

На рисунке 1.5 три столбца означают следующее:

− левый столбец представляет стек (направленный снизу вверх) структур

ядра DEVICE_OBJEKT, каждая из которых описывает специфику

управления одним устройством,

− средний столбец представляет набор драйверов устройств, участвующих

в управлении,

− правый столбец показывает направления передачи IRP (пакетов запросов

ввода-вывода) между драйверами.

Модель WDM предусматривает как минимум два драйвера для каждого

устройства. Один из драйверов – функциональный драйвер – отвечает за операции

ввода-вывода, обработку прерываний, а также предоставления пользователю

возможностей управления устройством. Это то, что в MS-DOS выполняет драйве

устройства.

Вторым драйвером является драйвер шины, отвечающий за взаимодействие

оборудования с компьютером. Так, например, драйвер шины PCI (Peripheral

Component Interconnect) обнаруживает карту расширения, вставленную в слот

PCI, определяет требования карты к ресурсам, которые должны быть выделены

для обеспечения связи с компьютером (порты ввода-вывода, области памяти),

включает и выключает питание в слоте карты

Многие устройства имеют более двух драйверов. Эти дополнительные

драйверы обычно называют драйверами-фильтрами (или фильтрующими

драйверами). Драйверы-фильтры отслеживают выполнение операций ввода-

вывода функциональными драйверами или модифицируют их поведение.

Верхний фильтрующий драйвер получает доступ к пакетам IRP до

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

Нижний фильтрующий драйвер получает пакеты IRP, которые

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

Как показано на рисунке 1.5, каждый из четырех показанных драйверов

устройства связан с одной из структур DEVICE_OBJECT левого столбца. Эти структуры принято обозначать следующим образом:

− PDO (Phisical Device Object) – физический объект устройства,

используемый драйвером шины для представления связи устройства с

шиной,

− FDO (Function Device Object) – функциональный объект устройства,

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

функциональностью устройства,

− FiDO (Filter Device Object) – фильтрующий объект устройства,

используемый драйвером-фильтром для хранения информации об

оборудовании и о выполнении операций фильтрации.

Рисунок 1.6 – Подключение устройства Plug and Play

Как уже говорилось выше, WDM-драйвер, это, прежде всего, PnP-драйвер.

Любое устройство PnP обладает электронной сигнатурой, служащей для

идентификации устройства. Драйвер шины Plug and Play поддерживает функцию перечисления (сканирования всех возможных устройств в момент запуска).

Драйверы шин, поддерживающих «горячее» подключение устройств (например, USB, PCMCIA), отслеживают аппаратные сигналы, свидетельствующие о появлении нового устройства на шине. Результатом перечисления, выполняемого

в момент запуска или в момент подключения устройства, является набор объектов PDO, показанных на рисунке 1.6 (подробнее об объектах – в следующем разделе).

(1) Как только драйвер шины обнаруживает факт подключения или

отключения оборудования, он вызывает функцию