实现地址映射的思路: l
分析逻辑地址,包括页号和页内偏移地址; l
查找页表,即物理页面; l
合成实际物理地址,物理地址=物理页面*2的N次方+偏移地址; l
映射数据文件的基本步骤: 1、调用CreateFileForMapping函数。 l
参数1:指定文件路径,注意文件路径的格式是没有盘符的; l
参数2:指定访问方式(读或写); l
参数3:指定共享模式; l
参数4:指定安全属性(NULL); l
参数5:指定是创建还是打开文件; l
参数6:指定文件属性; l
参数7:略; 2、调用CreateFileMapping函数。创建一个无名的或者有名的内存映射文件对象。 l
参数1:函数返回值; l
参数2:安全属性(NULL); l
参数3:指定要映射的文件的保护属性(只读OR读写); l
参数4:指定要映射的文件的大小,最高32位数; l
参数5:与参数4共同用于指定要映射的文件的大小,最低32位数; l
参数6:指定内存映射文件的名称(NULL); 3、调用MapViewOfFile函数。用于保留一段足够的地址空间,并且将永久存储器上的文件数据映射到这个地址空间。 l
参数1:指定内存映射文件对象,函数返回值; l
参数2:用于限定访问权限; l
参数3:指定映射区域的开始位置,最高32位数; l
参数4:和参数3共同用于指定映射区域的开始位置,最低32位数。 4、进行读/写操作;(前提是调用MapViewOfFile函数成功) 5、调用UnmapViewOfFile函数。撤销文件映射视图,执行结束。 l
参数1:指定视图首地址; 6、调用CloseHandle函数。关闭内存映射文件对象。
|