我有一个正在创建地图文件的程序,它能够很好地调用m_hMap = CreateFileMapping(m_hFile,0,dwProtect,0,m_dwMapSize,NULL);
,但是当后续函数调用MapViewOfFile(m_hMap,dwViewAccess,0,0,0)
时,我得到的错误代码为8,这是ERROR_NOT_ENOUGH_MEMORY,或错误字符串"错误没有足够的存储空间来处理此命令"。
所以我并不完全理解MapViewOfFile为我做了什么,以及如何解决这个问题。
一些数字......
m_dwMapSize = 453427200
dwProtect = PAGE_READWRITE;
dwViewAccess = FILE_MAP_ALL_ACCESS;
我认为我的网页尺寸为65536
答案 0 :(得分:1)
如果文件非常大并且要阅读,建议您以小块读取它,然后处理每个文件。 MapViewOfFile函数用于映射内存中的一块。
查看http://msdn.microsoft.com/en-us/library/windows/desktop/aa366761(v=vs.85).aspx需要偏移以正确完成其工作,即如果您想要分段读取非常大的文件。主要是由于碎片和相关原因,非常大的内存请求失败。