Архитектура современных операционных систем
149 ко, в этом случае он должен добавить к этому IRP данные, предназначенные для устройства, то есть еще одну область параметров. Эта область называются стеком. Структура драйвера Несмотря на большое разнообразие периферийных устройств и их разли- чие с точки зрения диспетчера ввода/вывода, все эти устройства ничем не отли- чаются друг от друга, поскольку представлены драйверами устройств, имею- щими одинаковую структуру. Каждый драйвер в WindowsNT содержит следующий набор стандартных компонентов или часть этого набора: 1. процедура инициализации - вызывается диспетчером ввода/вывода каждый раз при загрузке драйвера в систему. Процедура инициали- зации должна создавать системные объекты, с помощью которых диспетчер ввода/вывода получает доступ к драйверу. 2. набор процедур распределения - выполняет основные функции драй- вера. Обычно каждой функции ввода/вывода, выполняемой устрой- ством, соответствует своя процедура распределения. Она проверяет правильность параметров своей функции и обращается к процедуре запуска ввода/вывода на устройстве. Именно процедура распределе- ния вызывает диспетчер ввода/вывода при передаче IRP драйверу. 3. процедура запуска ввода/вывода - запускает операцию на устройстве, то есть пишет данные в регистры устройств. 4. обработчик аппаратных прерываний(ISR) - обрабатывает прерывания на уровне устройства. При загрузке драйвера адрес этой процедуры заносится в IDT. Эта процедура необходима только низкоуровневым драйверам, которые работают непосредственно с устройством. Если драйвер высокоуровневый или устройство не вырабатывает аппарат- ное прерывание, необходимость в процедуре отпадает.
Made with FlippingBook
RkJQdWJsaXNoZXIy MTY0OTYy