KBUGCHECK_REMOVE_PAGES 结构描述一个或多个驱动程序提供的数据页,这些数据将由故障转储文件中的 KBUGCHECK_REASON_CALLBACK_ROUTINE 回调例程删除。
语法
typedef struct _KBUGCHECK_REMOVE_PAGES {
PVOID Context;
ULONG Flags;
ULONG BugCheckCode;
ULONG_PTR Address;
ULONG_PTR Count;
} KBUGCHECK_REMOVE_PAGES, *PKBUGCHECK_REMOVE_PAGES;
成员
Context
包含专用上下文数据,以便独占使用回调例程。 回调例程可以将此成员设置为任何值。 通常,如果需要多次调用回调例程,则例程会将此成员设置为在初始调用期间指向驱动程序提供的缓冲区。 在后续调用期间,回调例程可以读取此缓冲区的先前内容并更新其内容。 在对回调例程的初始调用之前, 上下文 为 NULL。
Flags
包含描述删除页请求的标志。 回调例程必须设置此成员的值。 将此成员设置为以下一个或多个标志位的按位 OR:
| Flag | 价值 | Description |
|---|---|---|
| KB_REMOVE_PAGES_FLAG_VIRTUAL_ADDRESS | 0x00000001UL | 指示 Address 成员包含虚拟地址。 |
| KB_REMOVE_PAGES_FLAG_PHYSICAL_ADDRESS | 0x00000002UL | 指示 Address 成员包含物理地址。 |
| KB_REMOVE_PAGES_FLAG_ADDITIONAL_RANGES_EXIST | 0x80000000UL | 指示回调例程请求再次调用它,以便它可以删除更多页面。 |
BugCheckCode
包含 bug 检查代码,该代码指定 bug 检查的原因。 回调例程可以使用此信息决定是否将任何页面添加到故障转储文件中。 有关 bug 检查代码的完整列表,请参阅 WDK 中包含的 Bugcodes.h 头文件。
Address
指定从故障转储文件中删除回调例程请求的页面的物理或虚拟地址。
Count
指定要从故障转储文件中删除的连续页数,从 地址 成员指定的虚拟地址或物理地址开始。 如果 计数> 1,地址 是虚拟地址,则页面在虚拟内存空间中是连续的。 如果 计数> 1 和 Address 是物理地址,则页面在物理内存空间中是连续的。 回调例程可以将此成员设置为零,以指示它不需要从故障转储文件中删除任何页面。
言论
在调用 KBUGCHECK_REASON_CALLBACK_ROUTINE 回调例程时,作系统将 Reason 参数设置为 KbCallbackRemovePages,并将 ReasonSpecificData 参数设置为指向 KBUGCHECK_REMOVE_PAGES 结构。
有关 bug 检查回调例程的详细信息,请参阅 编写 bug 检查回调例程。
要求
| 要求 | 价值 |
|---|---|
| 最低支持的客户端 | Windows Vista |
| 支持的最低服务器 | Windows Server 2008 |
| 标头 | wdm.h |