一.文件映射步骤
1.1打开或创建文件
CreateFile()
1.2创建内存映射
HANDLE CreateFileMapping(文件句柄,安全属性,访问方式,
文件大小的高32= 0,文件大小的低32,映射命名)
1.3加载内存映射文件
LPVOID MapViewOfFile(内存映射句柄,访问模式,偏移量高32,
偏移量低32,映射字节数)
1.4 卸载映射
UnmapViewOfFile(卸载地址)
1.5关闭句柄
CloseHandle();//关闭映射句柄 以及文件
二.打开文件映射
2.1读取文件内容
HANDLE OpenFileMapping( //返回
DWORD dwDesiredAccess, // 指定保护类型
BOOL bIsInheritHandle, // 返回的句柄是否可以被继承
LPCSTR lpName // 创建对象时使用的名字
2.2加载内存映射文件
LPVOID MapViewOfFile(内存映射句柄,访问模式,偏移量高32,
偏移量低32,映射字节数)
案例:
HANDLE hMap = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, "DANNY" );
CHAR *ps = (CHAR*)MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS,0, 64*1024, 0 );
printf( "%s\n", ps );
UnmapViewOfFile( ps );
CloseHandle( hMap );
HANDLE hFile = CreateFile( "c:/map.dat",GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );
HANDLE hMap = CreateFileMapping( hFile, NULL,PAGE_READWRITE, 0, 1024*1024, "DANNY" );
CHAR *pszText = (CHAR*)MapViewOfFile( hMap, FILE_MAP_ALL_ACCESS, 0, 64*1024, 0 );
strcpy( pszText, "ABCD" );
printf( "%s\n", pszText );
UnmapViewOfFile( pszText );
getchar( );
CloseHandle( hMap );//一旦关闭,就没了
CloseHandle( hFile );
return 0;
内存映射原理参照https://blog.youkuaiyun.com/xiaobangkuaipao/article/details/76789545