错误检查 0x19:BAD_POOL_HEADER
BAD_POOL_HEADER 错误检查的值为 0x00000019。 这表示池标头已损坏。
重要
这篇文章适合程序员阅读。 如果你是在使用计算机时收到蓝屏错误代码的客户,请参阅蓝屏错误疑难解答。
BAD_POOL_HEADER 参数
参数 1 表示违规类型。 其他参数的含义取决于参数 1 的值。
参数 1 | 参数 2 | 参数 3 | 参数 4 | 错误消息的原因 |
---|---|---|---|---|
0x2 |
正在检查的池条目 |
池块的大小 |
0 |
特殊池模式检查失败。 (所有者可能损坏了池块。) |
0x3 |
正在检查的池条目 |
读回 flink 自由列表值 |
读回 blink 自由列表值 |
池自由列表已损坏。 (在正常运行的列表中,参数 2、3 和 4 的值应相同。) |
0x5 |
其中一个池条目 |
Reserved |
另一个池条目 |
一对相邻池条目具有相互矛盾的标头。 其中至少有一个损坏。 |
0x6 |
一个错误计算的条目 |
Reserved |
导致错误计算的错误条目 |
池块标头以前的大小太大。 |
0x7 |
0 |
保留 |
错误池条目 |
池块标头大小已损坏。 |
0x8 |
0 |
保留 |
错误池条目 |
池块标头大小为零。 |
0x9 |
一个错误计算的条目 |
Reserved |
导致错误计算的错误条目 |
池块标头大小已损坏(太大)。 |
0xA |
应找到的池条目 |
Reserved |
应包含池条目的页面的虚拟地址 |
池块标头大小已损坏。 |
0xD、0xE、0xF、0x23、0x24、0x25 |
Reserved |
预留 |
保留 |
释放后已修改释放块的池标头。 这通常不是释放块的先前所有者的错误;相反,这通常是(但并非总是)由于释放块之前释放的块已溢出。 |
0x20 |
应找到的池条目 |
下一个池条目 |
Reserved |
池块标头大小已损坏。 |
0X21 |
正在释放的池指针 |
为池块分配的字节数 |
在池块后找到的损坏值 |
正在释放池块后的数据已损坏。 通常,这意味着使用者(调用堆栈)已溢出块。 |
0X22 |
正在释放的地址 |
Reserved |
保留 |
正在释放的地址没有跟踪条目。 这通常是因为调用堆栈尝试释放已释放或从未分配以开始的指针。 |
原因
当前请求时池已损坏。
这可能是由于调用方造成的。
解决方法
必须使用内核调试器来演练内部池链接,才能找出问题可能的原因。
然后,可以对可疑池标记使用特殊池,或者在可疑驱动程序上使用驱动程序验证程序“特殊池”选项。 !analyze 扩展可能有助于查明可疑驱动程序,但这通常不是池损坏者的情况。
使用分析错误检查蓝屏数据中所述的步骤收集停止代码参数。 使用停止代码参数来确定要跟踪的特定类型的代码行为。
驱动程序验证程序
驱动程序验证程序是一个实时运行的工具,用于检查驱动程序的行为。 如果它在驱动程序代码的执行中发现错误,则会主动创建一个异常,以允许进一步检查驱动程序代码的该部分。 驱动程序验证程序管理器内置于 Windows 中,可在所有 Windows PC 上使用。 若要启动驱动程序验证程序管理器,请在命令提示下键入“验证程序”。 你可以配置要验证的驱动程序。 验证驱动程序的代码在运行时会增加开销,因此请尝试验证尽可能少的驱动程序。 有关详细信息,请参阅驱动程序验证程序。
Windows 内存诊断
如果此错误检查不一致,则可能与物理内存故障相关。
运行 Windows 内存诊断工具以测试内存。 在控制面板搜索框中键入“内存”,然后选择诊断计算机内存问题。运行测试后,使用事件查看器查看系统日志下的结果。 查找“内存诊断结果”条目以查看结果。