内存映射文件的原理

来源:百度知道 编辑:UC知道 时间:2024/05/17 05:02:32
网上找了一点有关内存映射文件的资料,可是看不懂。
1.调用CreateFile打开您想要映射的文件
2.调用CreateFileMapping,创建一个内存映射对象
3.调用MapViewOfFile,将文件的全部或部分映射进内存
5.调用UnmapViewOfFile来解除文件映射。
6.调用CloseHandle来关闭内存映射文件。
7.调用CloseHandle来关闭文件。
我有几点不懂的:
1 内存映射对象是什么东西,结构?指针?还是文件?这个内存映射对象的内容是什么?
2 内存映射文件是不是一个文件?如果是的话,这个文件的内容是什么,它有多少大?
3 将文件映射进内存到底是怎么映射的

讲点基础的你了解了再去看那些资料就好懂多了。
1。内存映射文件简单概述
内存文件映射也是Windows的一种内存管理方法,提供了一个统一的内存管理特征,使应用程序可以通过内存指针对磁盘上的文件进行访问,其过程就如同对加载了文件的内存的访问。通过文件映射这种使磁盘文件的全部或部分内容与进程虚拟地址空间的某个区域建立映射关联的能力,可以直接对被映射的文件进行访问,而不必执行文件I/O操作也无需对文件内容进行缓冲处理。内存文件映射的这种特性是非常适合于用来管理大尺寸文件的。
2。使用内存映射文件的一般流程
而在某些特殊行业,经常要面对十几GB乃至几十GB容量的巨型文件,而一个32位进程所拥有的虚拟地址空间只有232 = 4GB,显然不能一次将文件映像全部映射进来。对于这种情况只能依次将大文件的各个部分映射到进程中的一个较小的地址空间。这需要对上面的一般流程进行适当的更改:
1)映射文件开头的映像。
2)对该映像进行访问。
3)取消此映像
4)映射一个从文件中的一个更深的位移开始的新映像。
5)重复步骤2,直到访问完全部的文件数据。