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 作为 Handled 参数传递,否则会传递 FALSE。 如果任何回调返回值为 TRUE,则系统会认为中断已处理。 否则,系统会为中断调用 HAL 的默认处理程序,这通常会导致系统检查 bug。
回调例程必须能够在 IRQL = HIGH_LEVEL 运行。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <= APC_LEVEL (请参阅备注部分) |
DDI 符合性规则 | HwStorPortProhibitedDDI (storport) , IrqlKeApcLte2 (wdm) |