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)

另请参阅

KeDeregisterNmiCallback