核心编程有详细介绍
1.创建:
HANDLE hFileMapping = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 1024, _T("XXXX"));//1024是文件大小,请自定义
2.写入:
HANDLE hFileMapping1 = OpenFileMapping(FILE_MAP_WRITE, FALSE, _T("XXXX"));
void *pMapView = MapViewOfFile(hFileMapping1, FILE_MAP_WRITE, 0, 0, 1024);//1024对应"创建"
memset(pMapView,0,1024) ;
memcpy(pMapView,(LPCTSTR)szEdit,1024) ;
UnmapViewOfFile(pMapView);//在当前应用程序的内存地址空间解除对一个文件映射对象的映射,这个地址是早先用MapViewOfFile函数获得的
3.读取:
HANDLE hFileMapping = OpenFileMapping(FILE_MAP_READ, FALSE, _T("XXXX"));
void *pMapView = MapViewOfFile(hFileMapping, FILE_MAP_READ, 0, 0, 1024);/*将一个文件映射对象映射到当前应用程序的地址空间,返回值:Long,文件映射在内存中的起始地址*/
CString szEdit ;
szEdit =(LPCTSTR) pMapView ;
SetDlgItemText(IDC_EDIT1,szEdit);
UnmapViewOfFile(pMapView);/*在当前应用程序的内存地址空间解除对一个文件映射对象的映射,这个地址是早先用MapViewOfFile函数获得的*/
4.释放:
HANDLE hFileMapping = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, _T("XXXX"));
// 关闭共享内存
if (hFileMapping != NULL)
CloseHandle(hFileMapping);
返回失败可用GetLastError 得到,具体可查MSDN