Программирование драйверов Windows

Общий взгляд на структуру драйвера режима ядра


Уточняя уже представленную ранее метафору, что драйвер есть DLL режима ядра, можно сказать, что драйвер представляет собой всего лишь коллекцию процедур, которые вызываются системным программным обеспечением, как правило, Диспетчером ввода/вывода. Драйверные процедуры пассивно ожидают того момента, когда к ним обратится программный код Диспетчера ввода/вывода.

В зависимости от назначения драйвера, Диспетчер ввода/вывода может вызывать процедуры драйвера в следующих ситуациях:

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



    Содержание раздела