BAD_POOL_CALLER 参数
参数 1 表示违规类型。
参数 1 | 参数 2 | 参数 3 | 参数 4 | 错误原因 |
---|---|---|---|---|
0x00 | 0 | 池类型 | 池标记 | 当前线程请求零字节池分配。 |
0x01,0x02,0x04 | 指向池头的指针 | 池头内容的第一部分 | 0 | 池头已损坏。 |
0x06 | 保留 | 指向池头的指针 | 池头内容 | 当前线程试图释放已被释放的池。 |
0x07 | 保留 | Pool header contents | 被释放的池块地址 | 当前线程试图释放已经被释放的池。 |
0x08 | 当前 IRQL | 池类型 | 分配大小,以字节为单位 | 当前线程尝试在无效的 IRQL 上分配池。 |
0x09 | 当前 IRQL | 池类型 池 | 地址 | 当前线程试图以无效的 IRQL 释放池。 |
0x0A | 池 | 分配器标签的地址 | 尝试释放中使用的标签 | 当前线程试图通过使用错误的标签来释放池内存。 (内存可能属于另一个组件。)池分配标记的 |
0x0B,0x0C,or 0x0D | 地址错误配额进程指针当前线程试图在损坏的池分配上释放配额。起始地址系统地址空间的起始0当前线程试图在用户模式地址释放内核池。起始地址物理页框 | 最高物理页框 | 当前线程试图释放未分配的非分页池地址。 | 地址正在释放 |
0x40 | 0 | 0 | 当前线程试图释放一个从未在任何池中的虚拟地址。 | 起始地址 |
0x41 | 保留 | 0 | 当前线程试图释放未分配的非分页池地址。 | 起始地址 |
0x42or 0x43 | 0 | 0 | 当前线程试图释放无效的池地址。 | 起始地址 |
0x44 | 物理页框 | 最高物理页框 | 当前线程试图释放未分配的非分页池地址。 | 起始地址 |
0x46 | 保留 | 保留 | 当前线程试图释放未分配的分页池地址。 | 起始地址 |
0x47 | 起始偏移量,以页为单位,从分页池的开头开始 分页池的 | 大小,以字节为单位 | 当前线程试图释放未分配的分页池地址。 | 起始地址 |
0x48 | 0 | 0 | 当前线程试图释放无效的连续内存地址。 (MmFreeContiguousMemory 的调用者正在传递一个错误的指针。) | 正在释放的地址 |
0x50 | 0 | 0 | 当前线程试图用无效地址释放池。 (此代码还可以指示池标头中的损坏。) | 池类型 |
0x60 | 请求的字节数 | 池标记 | 当前线程标记了一个分配请求 MUST_SUCCEED。 (不再支持此池类型。) | 池类型 |
0x99 | 请求的字节数 | 调用者地址 | 当前线程尝试分配一个标记为 0 的池 (这将无法跟踪,并且可能破坏现有的标记表。) | 池类型 |
0x9A | 数量请求 | 的字节数调用者的地址 | 当前线程试图分配一个带有“BIG”标签的池。 (这将是不可追踪的,并且可能会破坏现有的标签表。)使用了 | 不正确的池标签 |
0x9B | 池类型 | 调用者的地址 | 当前线程尝试使用不包含任何字母或者数字的标记分配池。使用此类标签会使跟踪池问题变得困难。 | 保留 |
0x9C | 保留 | 从分页池开始的起始偏移量,以页为单位 | 当前线程试图在分配过程中释放分页池地址。 | {翻译单元格} |
0x9D | {翻译单元格} | {翻译单元格} | {翻译单元格} | {翻译单元格} |
0x41286 | {翻译单元格} | {翻译单元格} | {翻译单元格} | {翻译单元格} |
_POOL_TYPE 代码在 Ntddk.h 中列举。
特别是,0 表示非分页池,1 表示分页池。
on it road.com
原因
当前线程发出了无效的池请求。
通常这是在错误的 IRQL 级别或者双重释放相同的内存分配等。
BAD_POOL_CALLER 错误检查的值为 0x000000C2.
这表明当前线程正在发出错误的池请求。
解决方法
启用内存池选项的情况下激活驱动程序验证程序,以获取有关这些错误的更多信息并定位有故障的驱动程序。
驱动程序验证器
Driver Verifier 是一种实时运行以检查驱动程序行为的工具。
如果它在驱动程序代码的执行中发现错误,它会主动创建一个异常以允许进一步检查该部分驱动程序代码。
驱动程序验证程序管理器内置于 Windows 中,可在所有 Windows PC 上使用。
要启动驱动程序验证程序管理器,请在命令提示符下键入 Verifier。
我们可以配置要验证的驱动程序。
验证驱动程序的代码在运行时会增加开销,因此请尝试验证尽可能少的驱动程序。
有关详细信息,请参阅驱动程序验证程序。
Windows 内存诊断
特别是,对于内存池损坏的情况,请运行 Windows 内存诊断工具,尝试隔离物理内存作为原因。
在控制面板搜索框中,键入内存,然后选择诊断计算机的内存问题。
运行测试后,使用事件查看器在系统日志下查看结果。
查找 MemoryDiagnostics-Results 条目以查看结果。
日期:2020-09-17 00:16:10 来源:oir作者:oir