KeInitializeCrashDumpHeader 函数 (ntddk.h)

KeInitializeCrashDumpHeader 例程提供系统为故障转储文件所需的标头信息。

语法

NTSTATUS KeInitializeCrashDumpHeader(
  [in]            ULONG  DumpType,
  [in]            ULONG  Flags,
  [out]           PVOID  Buffer,
  [in]            ULONG  BufferSize,
  [out, optional] PULONG BufferNeeded
);

参数

[in] DumpType

指定转储文件的类型。 唯一有效的值是DUMP_TYPE_FULL。

[in] Flags

指定转储文件的标志。 唯一有效的值为 0。

[out] Buffer

指向接收标头信息的缓冲区的指针。

[in] BufferSize

指定 Buffer 指向的缓冲区的大小(以字节为单位)。

[out, optional] BufferNeeded

(可选)指向变量的指针,该变量接收保存完整标头信息所需的大小。

返回值

KeInitializeCrashDumpHeader 在成功时返回STATUS_SUCCESS,或在失败时返回相应的 NTSTATUS 错误代码。

注解

驱动程序可以使用此例程手动创建故障转储文件。 该文件可以随时创建,并由调试器用来检查系统的状态。

若要创建故障转储文件,请调用 KeInitializeCrashDumpHeader 来创建标头,然后将内存内容追加到 标头。 请注意,驱动程序不需要在调用例程后立即记录内存内容:通常可以在写入故障转储文件之前随时创建 标头。

由于例程设计为在记录内存内容之前调用,因此存在以下限制:

  • 例程不会记录有关活动异常记录的任何信息。
  • 如果系统 RAM 的大小发生更改,则必须重新创建标头。
例程不记录任何辅助转储数据。

从 Windows 8 开始,无论从哪个进程上下文调用 KeInitializeCrashDumpHeader,KeInitializeCrashDumpHeader 始终将系统进程页目录的基址写入故障转储标头。 调试器可以使用此目录在系统进程的上下文中访问故障转储文件。

在早期版本的 Windows 中,KeInitializeCrashDumpHeader 将调用方当前进程上下文的页面目录的基址写入故障转储标头。 因此,必须从系统进程调用 KeInitializeCrashDumpHeader 。 否则,调试器将无法访问保存该文件的进程上下文中的故障转储文件。

从 Windows 8 开始,KeInitializeCrashDumpHeader 在 Windows 驱动程序工具包 (WDK) 的 Wdm.h 头文件中声明。 若要将此例程与早期版本的 WDK 一起使用,请在驱动程序代码中包含以下函数声明:

NTSTATUS
  KeInitializeCrashDumpHeader(
    __in ULONG  DumpType,
    __in ULONG  Flags,
    __out PVOID  Buffer,
    __in ULONG  BufferSize,
    __out_opt PULONG  BufferNeeded
    );

要求

要求
最低受支持的客户端 从 Windows Server 2003 SP1 开始可用。
目标平台 通用
标头 ntddk.h (包括 Ntddk.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任何级别