производится по номеру главного устройства. В Windows 2000
применяется другая схема. Во время загрузки операционной системы
или в тот момент, когда в систему добавляется новое устройство plug-
and-play, поддерживающее установку системы без перезагрузки,
операционная система Windows 2000 автоматически обнаруживает
его и вызывает менеджер plug-and-play. Менеджер plug-and-play
запрашивает у устройства название фирмы-производителя и номер
модели устройства. Вооружившись данными сведениями, он ищет
драйвер для данного устройства в определенном каталоге на жестком
диске. Если этого драйвера нет, он отображает диалоговое окно, в
котором пользователю предлагается вставить гибкий диск или CD-
ROM с драйвером. Когда драйвер обнаружен, он загружается в
память.
Каждый драйвер должен поставлять набор процедур, которые
могут быть вызваны для получения требуемого обслуживания.
Первая процедура, называемая DriverEntry, инициализирует драйвер.
Она вызывается сразу после загрузки драйвера. Процедура может
создавать таблицы и структуры данных, но не должна обращаться к
самому устройству. Она также заполняет некоторые поля объекта
драйвера, созданного менеджером ввода-вывода при загрузке
драйвера. Поля в объекте драйвера включают указатели на все
остальные процедуры, предоставляемые драйвером.
Кроме того, для каждого устройства, управляемого драйвером
(например, для каждого диска IDE, управляемого драйвером диска
IDE), создается объект устройства и инициализируется так, чтобы
он указывал на объект драйвера. При наличии объекта устройства
можно легко найти объект драйвера и, таким образом, обращаться к
его методам.
Вторая процедура драйвера называется AddDevice. Она
вызывается менеджером plug-and-play всего один раз для каждого
добавляемого устройства. После этого драйвер вызывается первым
пакетом IRP, который устанавливает вектор прерываний и
инициализирует аппаратуру. Кроме того, драйвер должен содержать
процедуру обработки прерываний, различные процедуры,
управляющие таймерами, путь быстрого ввода-вывода, управление
DMA, позволять прервать исполняющийся текущий запрос и многое
другое.
В Windows 2000 драйвер должен сам выполнять всю работу. С
другой стороны, в системе Windows 2000 могут существовать стеки
Пример практической реализации
операционной системы: Windows 2000