![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Для взаимодействия драйверов устройств с ядром и исполнительной системой во всех операционных системах Windows, в том числе в Windows 2000, 98 и ME, используется так называемая модель драйверов Windows (Windows Driver Model, WDM). Термин драйвер соответствует широкому спектру модулей, включая уже известный вам менеджер ввода-вывода, который передает между другими драйверами IRP, но сам не взаимодействует с аппаратным обеспечением. Сюда же можно отнести драйвер файловой системы, преобразующий файловые операции в блочные, и редиректор, превращающий локальные файловые операции в вызовы удаленного сетевого файл-сервера.
В WDM определено три типа драйверов. Драйвер шины управляет одной из коммуникационных шин системы, например PCI или USB. Он осуществляет мониторинг состояния шины и управление питанием, а также следит за подсоединением и отсоединением физических устройств (поддерживает режим plug-and-play). Функциональный драйвер выполняет классические функции управления устройствами, а также преобразует интерфейсные операции устройства в IRP-форму для взаимодействия с более высокими уровнями программного обеспечения системы. Для непосредственного взаимодействия с аппаратным устройством функциональный драйвер прибегает к помощи слоя абстрагирования от оборудования. Благодаря такой организации системы, например, драйвер определенного типа сетевых плат PCI может работать с подобными платами на любом компьютере. Последний вид драйвера, называемый фильтрующим, работает только с пакетами запросов ввода-вывода.
Каждый драйвер включает набор подпрограмм, с помощью которых он взаимодействует с менеджером ввода-вывода. К ним относятся:
Q инициализационная подпрограмма, выполняемая при его загрузке, и соответствующая ей подпрограмма выгрузки, вызываемая перед удалением драйвера из системы;
Q подпрограмма удаления устройства, создающая новый объект для представления только что подсоединенного к системе устройства;
Q набор подпрограмм диспетчеризации, вызываемых для обслуживания каждого типа IPR (например, DispatchRead и DispatchWrite);
Q подпрограмма начала ввода-вывода, которая используется в простых драйверах, способных обрабатывать в каждый момент времени только один IRP — возможно, из-за ограничения, налагаемого физическим устройством (большинство драйверов поддерживают параллельную обработку пакетов);
подпрограмма обработки прерывания, которая вызывается в ответ на прерывание от устройства, и подпрограмма отложенного вызова процедуры (Deferred Procedure Call, DPC), аналогичная подпрограмме обработки прерывания, но выполняемая только после того, как приоритет процессора будет снижен до определенного уровня.
Дата публикования: 2014-11-04; Прочитано: 510 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!