KeBugCheckEx 函数 (wdm.h)

KeBugCheckEx 例程在调用方发现无法恢复的不一致,如果调用方继续运行,则会损坏系统,从而以受控的方式关闭系统。

语法

void KeBugCheckEx(
  [in] ULONG     BugCheckCode,
  [in] ULONG_PTR BugCheckParameter1,
  [in] ULONG_PTR BugCheckParameter2,
  [in] ULONG_PTR BugCheckParameter3,
  [in] ULONG_PTR BugCheckParameter4
);

参数

[in] BugCheckCode

指定一个值,该值指示 bug 检查的原因。

[in] BugCheckParameter1

[in] BugCheckParameter2

[in] BugCheckParameter3

[in] BugCheckParameter4

四个 BugCheckParameterX 值提供其他信息,例如发生内存损坏错误的地址和数据,具体取决于 BugCheckCode的值。

返回值

没有

言论

bug 检查是系统检测到的错误,导致系统立即控制关闭系统。 各种内核模式组件执行运行时一致性检查。 当此类组件发现不可恢复的不一致时,会导致生成 bug 检查。

只要可能,所有内核模式组件都应记录错误并继续运行,而不是调用 KeBugCheckEx。 例如,如果驱动程序无法分配所需的资源,它应记录错误,以便系统继续运行;它不得生成 bug 检查。

驱动程序或其他内核模式组件应仅在可能损坏系统本身的致命不可恢复错误的情况下调用此例程。

KeBugCheckEx 在开发驱动程序的早期阶段或正在进行测试时非常有用。 在这些情况下,传递给此例程的 BugCheckCode 应不同于 Windows 或其驱动程序已使用的代码。 有关这些代码的列表,请参阅 bug 检查代码

但是,即使在驱动程序开发期间,此例程也只有有限的实用工具,因为它会导致完整的系统关闭。 更有效的调试方法是将内核调试器附加到系统,然后使用将消息发送到调试器或中断调试器的例程。 有关详细信息,请参阅 WinDbg (内核模式)入门。

要求

要求 价值
最低支持的客户端 在 Windows 2000 及更高版本的 Windows 中可用。
目标平台 普遍
标头 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任何级别

另请参阅

IoAllocateErrorLogEntry

IoWriteErrorLogEntry

KeBugCheck

KeRegisterBugCheckCallback

KeRegisterBugCheckReasonCallback