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