0
映射到地址空间的内存映射文件。如何映射文件,如果地址空间为4 GB,哪个文件大小超过4 GB?Windows如何映射一个文件,其大小大于4GB?
映射到地址空间的内存映射文件。如何映射文件,如果地址空间为4 GB,哪个文件大小超过4 GB?Windows如何映射一个文件,其大小大于4GB?
看看相关的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之前就会遇到连续的地址空间问题),那么您需要映射文件的多个视图以覆盖它完整。
您不必一次就映射整个文件,而是使用'MapViewOfFile'来映射节。如果您尝试在地址空间中绘制的地图数量超过您的地图数量,则会失败。 –