是否有可用于提供映射地址的函数?
即使我必须映射小文件,我也想找到一种利用大页面的方法。我知道我可以浪费记忆力。我可以选择使用VirtualAlloc分配一个页面大小的块,然后我可以将其切块并将多个文件映射到。我假设,因为内存映射由虚拟内存子系统支持,这是不可能的 - 单页内存可能必须由单个文件支持。
我以为在做任何事之前我都会问。
答案 0 :(得分:0)
我怀疑这是不可能的,但只是一个想法:
地址分配决策属于MapViewOfFile
,而不属于CreateFileMapping
。 MapViewOfFile
肯定会在NTDLL.DLL
中调用一些原生API 内容。您可以找出它调用哪个函数来实际创建映射,谁知道 - 该函数可能更灵活,并允许KERNEL32
无法实现的功能。 (例如,我们知道PE文件部分的映射方式是您无法用MapViewOfFile
模仿的方式)。