Функция KeRegisterNmiCallback (wdm.h)
Подпрограмма KeRegisterNmiCallback регистрирует подпрограмму для вызова при возникновении немаскируемого прерывания (NMI).
Синтаксис
PVOID KeRegisterNmiCallback(
[in] PNMI_CALLBACK CallbackRoutine,
[in, optional] PVOID Context
);
Параметры
[in] CallbackRoutine
Указатель на функцию формы:
BOOLEAN
XxxNmiCallback(
IN PVOID Context,
IN BOOLEAN Handled
);
[in, optional] Context
Указывает значение, передаваемое в качестве параметра Contextэлемента XxxNmiCallback при его вызове.
Возвращаемое значение
При успешном выполнении KeRegisterNmiCallback возвращает непрозрачный указатель, который вызывающий объект передает в KeDeregisterNmiCallback для отмены регистрации обратного вызова. Подпрограмма возвращает значение NULL , если ей не удается зарегистрировать обратный вызов.
Комментарии
При возникновении немаскируемых прерываний система вызывает каждый зарегистрированный обратный вызов в порядке, обратном от порядка, в котором они были зарегистрированы. Для первого обратного вызова система передает значение FALSE в качестве параметра Handled . Для каждого последующего обратного вызова, если какой-либо предыдущий обратный вызов возвращал значение TRUE, система передает true в качестве параметра Handled , в противном случае — false. Если какой-либо обратный вызов возвращает значение TRUE, система считает, что прерывание было обработано. В противном случае система вызывает обработчик HAL по умолчанию для прерывания, что обычно вызывает ошибку системы проверка.
Подпрограмма обратного вызова должна выполняться в IRQL = HIGH_LEVEL.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <= APC_LEVEL (см. раздел "Примечания") |
Правила соответствия DDI | HwStorPortProhibitedDDIs(storport), IrqlKeApcLte2(wdm) |