我有一个正在创建映射文件的程序,它能够很好地调用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
最佳答案
如果文件很大并且要读取,建议先将其读取成小块,然后再进行处理。 MapViewOfFile函数用于在内存中映射一块。
查看http://msdn.microsoft.com/en-us/library/windows/desktop/aa366761(v=vs.85).aspx需要偏移量以正确完成其工作,即,如果您想分块读取一个非常大的文件。主要是由于碎片和相关原因,很大的内存请求失败。