从内存地址获取所有者模块

时间:2014-07-16 10:28:29

标签: winapi virtual-memory

我使用VirtualQuery迭代我的进程内存,我想知道一定的内存范围是由谁拥有的。可执行文件或者其他一些dll,并获取它的名称。

有没有办法可以找到答案?

1 个答案:

答案 0 :(得分:5)

是的,Windows中的模块句柄值只是模块VM分配的基址。

因此,您可以将MEMORY_BASIC_INFORMATION.AllocationBase转换为(HMODULE)并将其传递给GetModuleFileName()。当然,请记住,这仅适用于为从可执行文件加载的代码进行的分配。您通常会遇到许多使用VirtualQuery()的VM分配,这些分配是数据或堆栈。他们没有所有者,也没有与模块相关联。