![]() |
![]() |
![]() |
Определение текущего уровня IRQL Текущий уровень IRQL свой у каждого CPU. Код режима ядра может определить IRQL, в котором он выполняется, посредством вызова функции KeGetCurrentlrql (), прототип которой: KIRQL KeGetCurrentlrql (); Большинство подпрограмм драйвера устройства вызывается Диспетчером ввода/вывода на определенном архитектурой уровне IRQL. To есть разработчик драйвера знает уровень (или уровни) IRQL, на котором будет вызываться данная функция. Подпрограммы режима ядра могут изменять IRQL, на котором они выполняются, вызывая функции KeRaiselrql() и KeLowerlrql(), прототипы которых: VOID KeRaiselrql (IN PKIRQL Newlrql, OUT PKIRQL Oldlrql); Где: Newlrql - значение, до которого должен быть поднят уровень IRQL текущего процессора; Oldlrql - указатель на место, в которое будет помещен IRQL, на котором текущий процессор выполнялся перед тем, как был поднят к Newlrql. VOID KeLowerlrql (IN KIRQL Newlrql); Где: Newirql - значение,
до которого должен быть понижен IRQL текущего процессора. |
![]() |
![]() |
![]() |