按池标记请求特殊池

可以为使用指定池标记的所有分配请求特殊池。 系统上一次只能有一个池标记与内核特殊池请求相关联。

在 Windows Vista 和更高版本的 Windows 中,还可以使用命令行按池标记请求特殊池。 有关信息,请参阅 GFlags 命令

按池标记请求特殊池

  1. 选择“ 系统注册表 ”选项卡或“ 内核标志 ”选项卡。

    在 Windows Vista 和更高版本的 Windows 上,此选项在两个选项卡上都可用。 在早期版本的 Windows 上,它仅在 “系统注册表 ”选项卡上可用。

  2. “内核特殊池标记 ”部分中,单击“ 文本”,然后键入标记的四个字符模式。

    标记可以包含 (单个字符) 和 * (多个字符) 通配符。 例如,Fat* 或 Av?4。

  3. 以下屏幕截图显示了在“系统注册表”选项卡上以文本的形式输入的标记。

    在 GFlags 的“系统注册表”选项卡上以文本形式输入的标记的屏幕截图。

  4. 单击“应用”。

    单击“ 应用”时,GFlags 会将所选内容从 “文本 ”更改为 “十六 进制”,并将 ASCII 字符显示为十六进制值, (低端) 顺序。 例如,如果键入 Tag1,GFlags 会将标记显示为 0x31676154 (1gaT) 。 这是存储在注册表中并由调试器和其他工具显示的方式。

    下图显示了单击“ 应用”的效果。

    显示单击 GFlags 中的“应用”效果的屏幕截图,并将标记显示为十六进制值。

言论

若要有效地使用此功能,请确保驱动程序或其他内核模式程序使用唯一的池标记。 如果怀疑驱动程序正在使用所有特殊池,请考虑在代码中使用多个池标记。 然后,可以多次测试驱动程序,在每个测试中将特殊池分配给一个池标记。

此外,选择具有十六进制值的池标记,该值大于系统的页大小。 对于内核模式代码,如果输入值小于 PAGE_SIZE 的池标记,则 Gflags 会为大小在相应范围内的所有分配请求特殊池,并为具有等效池标记的分配请求特殊池。 例如,如果选择大小 30,则特殊池将用于大小在 17 到 32 字节之间的所有分配,以及池标记0x0030的分配。