使用VirtualQuery找出哪个“文件”使用内存中的某个页面

时间:2011-02-16 16:12:32

标签: c++ windows memory memory-management process

我正在使用VirtualQuery来浏览应用程序的虚拟空间。但我想确定应用程序分配的所有内容,而不仅仅是我的exe - 比如SysInternals的VMmap应用程序 - 我需要知道哪些页面属于哪个文件(我需要识别为我的应用程序和dll分配的页面)。怎么做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以将CreateToolhelp32Snapshot与TH32CS_SNAPMODULE一起使用来检索模块基址和大小。对于堆,您可以使用GetProcessHeaps()和HeapWalk()来获取不同的堆区域(已提交和保留)。

其他事情(线程堆栈,映射内存)似乎更难检索。