我使用 TH32CS_SNAPHEAPLIST 标志调用 CreateToolhelp32Snapshot,然后使用(Heap32First/Heap32Next 遍历堆列表)。
这在为相同架构(32 位或 64 位)构建的进程之间似乎可以正常工作,但是在调用“内部架构”时我得到了奇怪的结果。这对于 32 位是有意义的,事实上它被记录在案:
如果指定进程是 64 位进程,而调用者是 32 位进程,则此函数失败,最后错误代码为 ERROR_PARTIAL_COPY (299)。我很欣赏这可能只是预期的行为,但我看不到它记录了相反的方向。
因此,对于 64 到 32 位,我将只看到 2 个堆用于返回 10 到 32 到 32 的进程。
我不知道这些是否是 wow64 正在使用的堆,但我的问题是:
如何从 64 位进程中获取 32 位进程堆列表?
有关堆差异的任何信息都将是一个奖励。