windows如何映射文件,大小超过4GB?

时间:2013-10-30 10:30:49

标签: windows winapi

映射在地址空间中的内存映射文件。如果地址空间是4 GB,那么windows映射文件的大小如何超过4 GB?

1 个答案:

答案 0 :(得分:3)

查看相关的API:

LPVOID WINAPI MapViewOfFile(
  _In_  HANDLE hFileMappingObject,
  _In_  DWORD dwDesiredAccess,
  _In_  DWORD dwFileOffsetHigh,
  _In_  DWORD dwFileOffsetLow,
  _In_  SIZE_T dwNumberOfBytesToMap
);

这只映射文件的一部分,即文件的视图。并且可以在任何时间映射的字节数由dwNumberOfBytesToMap的值确定。其类型为SIZE_T,是指针大小的整数。换句话说,在32位进程中,任何时候可以映射的内容的上限是4GB。

如果要映射的文件大于4GB(实际上,在达到4GB之前,你会遇到连续地址空间的问题),那么你需要映射文件的多个视图以覆盖它完整的。