-
-
[求助]如何获取一个内存对应的TAG?看过OS源码的大师来帮忙一下
-
发表于:
2012-7-11 13:25
5512
-
[求助]如何获取一个内存对应的TAG?看过OS源码的大师来帮忙一下
Poolmon.exe是一个内存泄漏检查工具,它可以监视到某中TAG标签的内核内存是否一直没有被释放,它会枚举出系统里所有的TAG类型值.我想获取一个内存地址对应的TAG(假设这个内存地址我们事先不知道是谁在什么时候被申请的,只是知道了这个地址,同时也不知道这个地址是否是这个内存块的首地址)看过OS源码的大师来帮忙一下,在windows xp平台,网络上有关NtQuerySystemInformation内核函数的应用比如:查询cpu以及内存使用情况、枚举系统进程、枚举系统内核模块等等功能的资料比比皆是,我们也都知道NtQuerySystemInformation提供了53种系统信息查询功能,唯独22号功能在我网络上我一直搜不到有关的资料,在extypes.h头文件里我查到如下两个数据结构:
typedef struct _SYSTEM_POOLTAG
{
union
{
UCHAR Tag[4];//这个就是内存对应的TAG标签
ULONG TagUlong;
};
ULONG PagedAllocs;//这个是不是指:TAG标签对应的分页内存块计数?自今我还没有找到有关的任何资料说明。
ULONG PagedFrees;//这是指什么?是指TAG标签对应的分页内存块被释放的次数吗?
SIZE_T PagedUsed;//这是指什么?
ULONG NonPagedAllocs;//这个是不是指:TAG标签对应的非分页内存块计数?自今我还没有找到有关的任何资料说明。
ULONG NonPagedFrees;//这是指什么?是指TAG标签对应的非分页内存块被释放的次数吗?
SIZE_T NonPagedUsed;//这是指什么?
} SYSTEM_POOLTAG, *PSYSTEM_POOLTAG;
typedef struct _SYSTEM_POOLTAG_INFORMATION
{
ULONG Count;//这个应该是SYSTEM_POOLTAG TagInfo[]的数组计数?自今我还没有找到有关的任何资料说明。
SYSTEM_POOLTAG TagInfo[1];
} SYSTEM_POOLTAG_INFORMATION, *PSYSTEM_POOLTAG_INFORMATION;
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!