QueryWorkingSetEx在应用于共享内存时返回无效页面

时间:2012-09-14 10:36:25

标签: windows memory shared

我正在使用CreateFileMapping和MapViewOfFile创建一个共享内存块,从而获得一个指针。然后我将QueryWorkingSetEx应用于它,问题是我一直在PSAPI_WORKING_SET_EX_INFORMATION返回结构中获取无效页面。我在NUMA架构上,但在其他非NUMA机器上也会发生同样的事情。 如果我在使用malloc分配的内存上尝试完全相同的过程并获得有效结果,那么QueryWorkingSetEx是否可能不支持共享内存指针?

1 个答案:

答案 0 :(得分:1)

在与微软的支持人员交谈后,我得到了解决方案,因为在MapViewOfFile之后立即调用了QueryWorkingSetEx,尚未触及内存地址,因此页面尚未被任何物理内存支持。 解决方案是在调用QueryWorkingSetEx之前简单地对内存地址执行读取循环,这会强制内存管理器使用物理内存备份页面。