进程间共享内存
?簡明扼要:
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
轉載于:https://www.cnblogs.com/hgy413/archive/2010/11/15/3693692.html
總結
- 上一篇: 读取纯真IP数据库的公用组件QQWry.
- 下一篇: sql2008 查询某个表被那些存储过程