2013-10-30 45 views
0

映射到地址空间的内存映射文件。如何映射文件,如果地址空间为4 GB,哪个文件大小超过4 GB?Windows如何映射一个文件,其大小大于4GB?

+4

您不必一次就映射整个文件,而是使用'MapViewOfFile'来映射节。如果您尝试在地址空间中绘制的地图数量超过您的地图数量,则会失败。 –

回答

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之前就会遇到连续的地址空间问题),那么您需要映射文件的多个视图以覆盖它完整。

相关问题