Поделиться через


Функция 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

Указывает значение, передаваемое в качестве параметра контекста контекстаxxxNmiCallback при вызове.

Возвращаемое значение

При успешном выполнении KeRegisterNmiCallback возвращает непрозрачный указатель, который вызывающий объект передает KeDeregisterNmiCallback для отмены регистрации обратного вызова. Подпрограмма возвращает NULL, если не удается зарегистрировать обратный вызов.

Замечания

При возникновении немаскируемых прерываний система вызывает каждый зарегистрированный обратный вызов в обратном порядке из порядка, в котором они были зарегистрированы. Для первого обратного вызова система передает false в качестве параметра Handled. Для каждого последующего обратного вызова, если любой предыдущий обратный вызов вернулся TRUE, система передает TRUE в качестве параметра обработанного, в противном случае она передает FALSE. Если обратный вызов возвращает значение TRUE, система считает прерывание обработанным. В противном случае система вызывает обработчик по умолчанию HAL для прерывания, что обычно приводит к проверке ошибок системы.

Подпрограмма обратного вызова должна выполняться в IRQL = HIGH_LEVEL.

Требования

Требование Ценность
целевая платформа Всеобщий
заголовка wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= APC_LEVEL (см. раздел "Примечания")
правил соответствия DDI HwStorPortProhibitedDIs(storport), IrqlKeApcLte2(wdm)

См. также

KeDeregisterNmiCallback