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

       

Динамическое перемещение кода драйвера в страничную память


Наконец, третий способ перемещения кода драйвера в страничную память является динамическим и происходит под управлением самого драйвера. Весь программный код драйвера, обычно размещенный в области кода операционной системы (начинающейся с адреса 0x80000000), можно пометить как "страничный" и переместить в странично организованную память системным вызовом MmPageEntireDriver, которому в качестве параметра передается любой адрес или указатель на любую процедуру в составе кода драйвера, например, AddDevice (если эта процедура присутствует). Обратное действие выполняет вызов MmResetDriverPaging, который восстанавливает статус всех секций кода драйвера, данный им при компиляции, и все секции, которые были созданы как нестраничные, фиксируются в оперативной памяти.

Вызовы MmPageEntireDriver и MmResetDriverPaging

следует выполнять только в коде, работающем на уровне IRQL равном PASSIVE_LEVEL.



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