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

Kernel mode


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

mov dx,0378h out dx,ах

то не случится ничего страшного. Но после такого поступка в Windows XP на экране монитора непременно появится сообщение, подобное следующему:

Рис. 1.1

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

Что произошло? Просто Windows NT позволяет выполнять ответственные операции только модулям режима ядра (к которым относятся драйверы режима ядра). В режиме ядра можно достоверно определять реально присутствующие в системе аппаратные ресурсы, непосредственно обращаться к ним, вызывать "могущественные" системные функции, влиять на прохождение данных (подсчитывать, кодировать/декодировать) и т.д.

Программирование в режиме ядра имеет существенные особенности, прежде всего, это касается ответственности и необходимости обращать внимание на те вопросы, которые в пользовательском режиме не возникают. Например, на каком уровне приоритета IRQL более оптимально выполнять отдельные рабочие операции и в какой тип области памяти размещать рабочий буфер? Образно говоря, программирование в режиме ядра отличается от программирования в пользовательском режиме так же, как жизнь на высокогорье отличается от жизни на равнине.



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