如何为CreateFileMapping / OpenFileMapping提供地址

时间:2013-01-28 20:42:26

标签: windows 64-bit huge-pages

是否有可用于提供映射地址的函数?

即使我必须映射小文件,我也想找到一种利用大页面的方法。我知道我可以浪费记忆力。我可以选择使用VirtualAlloc分配一个页面大小的块,然后我可以将其切块并将多个文件映射到。我假设,因为内存映射由虚拟内存子系统支持,这是不可能的 - 单页内存可能必须由单个文件支持。

我以为在做任何事之前我都会问。

1 个答案:

答案 0 :(得分:0)

我怀疑这是不可能的,但只是一个想法:

地址分配决策属于MapViewOfFile,而不属于CreateFileMappingMapViewOfFile肯定会在NTDLL.DLL中调用一些原生API 内容。您可以找出它调用哪个函数来实际创建映射,谁知道 - 该函数可能更灵活,并允许KERNEL32无法实现的功能。 (例如,我们知道PE文件部分的映射方式是您无法用MapViewOfFile模仿的方式)。