我需要一个实用程序(如果不存在,则需要一个 Windows 函数)来查询正在运行的应用程序中页面的状态。像 VMMap 这样的实用程序已经提供了相当多的信息,但我缺少的是以下内容:知道内存页面当前是在 RAM 中、已换出还是未加载。
问题是我的可执行文件是从网络加载的,虽然我过去使用了 /SWAPRUN:NET 链接器标志,但我不再使用它了,因为它会导致自 Windows Vista 以来的 Windows 资源管理器出现严重的性能问题(如果设置了此标志,Windows 资源管理器也会通过网络加载完整的可执行文件只是为了显示图标)。
我有一些技巧可以强制应用程序进入内存,但我的印象是它并不总是有效,而且如果 Windows 内存不足,它似乎也不起作用(我认为它只是删除可执行页面而不是将它们交换到页面文件中)。
有了这样的实用程序,我就能检查 Windows 实际在做什么,而且我可以尝试一些其他的想法来强制将应用程序代码放入内存中。