您的位置:首页 > 移动开发

5.VC(Custom)-进程间共享内存映射FileMapping

2010-11-15 15:45 183 查看
核心编程有详细介绍

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: