有没有办法一次将内存映射文件加载到内存中

时间:2012-12-08 16:44:40

标签: windows winapi

我有一个大型二进制文件(大约1 GB),我想按顺序处理。我正在使用内存映射文件来访问该文件。有没有办法告诉Windows尽快交换整个文件?目前,看起来好像每次发生页面错误时窗口只加载一个页面,导致处理速度非常慢。

2 个答案:

答案 0 :(得分:2)

我真的很惊讶没有人提到PrefetchVirtualMemory

BOOL WINAPI PrefetchVirtualMemory(
  _In_  HANDLE hProcess,
  _In_  ULONG_PTR NumberOfEntries,
  _In_  PWIN32_MEMORY_RANGE_ENTRY VirtualAddresses,
  _In_  ULONG Flags
);

以下是其他一些链接:

就我个人而言,我不知道这对您的申请是否是一个好主意。但是当然 - 尝试一下,看看它是否有帮助!

恕我直言..

答案 1 :(得分:1)

当您希望强制将一大块文件分页到内存中时,请使用您用于创建文件映射的文件句柄调用ReadFile