核心编程有详细介绍
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
本文详细介绍了使用Windows API进行共享内存编程的方法,包括创建、写入、读取和释放等步骤,并提供了具体的代码示例。
840

被折叠的 条评论
为什么被折叠?



