Ограничения, налагаемые на драйвер
- 1. Драйвер режима ядра не может использовать API пользовательского уровня или стандартные библиотеки времени исполнения языка С. Можно использовать только функции ядра.
- 2. Драйвер не может осуществлять операции с числами с плавающей точкой. Попытка сделать это может вызвать аварийную остановку системы. Причина - в основе реализации архитектуры ММХ. Не вдаваясь в подробности можно сказать, что в этой архитектуре для обозначения регистров ММХ использованы те же обозначения, что и для использования регистров FPU. Переключение между использованием регистров MMX/FPU, производимое на пользовательском уровне, невидимо для драйвера.
- 3. Драйвер не может манипулировать физической памятью напрямую. Однако он может получить виртуальный адрес для любого физического адреса и манипулировать им.
- 4. Код драйвер не должен долгое время работать на повышенных
уровнях IRQL. Другие ограничения можно посмотреть в [Developing Windows
NT Device Driver,
chapter 5, Driver Limitation].
Последующие разделы будут посвящены описанию различных точек входа драйвера.