ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ExAllocatePoolWithTag

2022-08-05 05:31:06  阅读:39  来源: 互联网

标签:调用 字节 标签 内存 ExAllocatePoolWithTag ExAllocatePool


PVOID p = ExAllocatePool(Pool_Type, Size);

PVOID p =

 

(Pool_Type, Size, Tag);

  调用ExAllocatePool是从内核模式堆中分配内存的标准方式。另一个函数ExAllocatePoolWithTag,与ExAllocatePool稍有不同,它提供了一个有用的额外特征。当使用ExAllocatePoolWithTag时,系统在你要求的内存外又额外地多分配了4个字节的标签。这个标签占用了开始的4个字节,位于返回指针所指向地址的前面。调试时,如果你查看分配的内存块会看到这个标签,它帮助你识别有问题的内存块。

  在调用ExAllocatePoolWithTag的时候,系统会在要求的内存大小的基础上再额外多分配4个字节的标签.这个标签占用了开始的4个字节,位于返回指针所指向地址的前面.这样,当调试时这个标签可以帮助你识别有问题的内存块.

  在WDM.H(NTDDK.H)中声明了,内存分配函数无条件受预处理宏POOL_TAGGING控制(POOL_TAGGING被无条件的定义).因此,即便是调用的ExAllocatePool函数,实际执行的却是:ExAllocatePoolWithTag,其加入的标签为"mdW",指明是WDM的内存块.

又或者你强行关闭POOL_TAGGING宏再去调用ExAllocatePool,实际执行的还是ExAllocatePoolWithTag,并带标签"enoN".

因此,建议在分配内存时,直接调用ExAllocatePoolWithTag并加上一个自定义的标签

 

【转】https://www.shuzhiduo.com/A/n2d9E7QdDv/

标签:调用,字节,标签,内存,ExAllocatePoolWithTag,ExAllocatePool
来源: https://www.cnblogs.com/hshy/p/16552835.html

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有