进程间共享内存操作简易封装
来源:互联网 发布:手机日记本数据库表 编辑:程序博客网 时间:2024/06/14 22:42
进程间共享内存操作,其中有加锁读写
头文件中定义共享名称和互斥量名称
const LPCTSTR sMemoryFileName = _T("MyShareName");//指定内存映射文件名称const LPCTSTR sMutexName = _T("MyMutexName");//指定Mutex名称
HANDLE CreateOpenFileMapping(LPCTSTR lpShareMemName){//打开共享的文件对象。 HANDLE hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, lpShareMemName);if (hMapFile){}else{//创建共享文件。 hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, BUF_SIZE, lpShareMemName);}return hMapFile;}///////////////////////////////////////////////////////函数主要对共享内存读写///hMapFile :共享内训映射句柄///bInOutData:写入或者读取数据///lpMutexName:互斥量名字///bRW :读写标志 0 read ; 1 write///返回值 ture成功 ;false 失败/////////////////////////////////////////////////////BOOL OperateData(HANDLE hMapFile, BYTE *bInOutData, LPCTSTR lpMutexName, bool bRW){BOOL bSuc = FALSE;BYTE *pBuf = (BYTE *)MapViewOfFile(hMapFile, // 共享内存的句柄FILE_MAP_ALL_ACCESS, // 可读写许可0,0,BUF_SIZE);if (pBuf){//加把锁在这地方HANDLE hMutex = CreateMutex(NULL, FALSE, lpMutexName);if (hMutex && WaitForSingleObject(hMutex, 30 * 1000) == WAIT_OBJECT_0){if (bRW){memset(pBuf, 0, BUF_SIZE);memcpy(pBuf, bInOutData, BUF_SIZE - 1);}else{memcpy(bInOutData, pBuf, BUF_SIZE - 1);}ReleaseMutex(hMutex);CloseHandle(hMutex);UnmapViewOfFile(pBuf);hMutex = NULL;pBuf = NULL;bSuc = TRUE;}}return bSuc;}
阅读全文
0 0
- 进程间共享内存操作简易封装
- 进程间共享内存
- 进程间共享内存
- c#读写共享内存操作函数封装
- 进程间通讯-共享内存
- linux 进程间共享内存
- 进程间通信-共享内存
- 进程间通信---共享内存
- 进程间通信--共享内存
- 进程间通信--共享内存
- 进程间通信-共享内存
- 进程间的共享内存
- 进程间通信共享内存
- linux进程间共享内存
- 进程间通信-共享内存
- 进程间通信---共享内存
- 进程间通信----共享内存
- 【进程间通信】共享内存
- 1.下载安装Nexus搭建Maven私服
- 剑指offer
- 学习ASP.NET之前,先了解它
- 1000. String Reversion
- 门外小白用axis2调用接口,发送数据请求
- 进程间共享内存操作简易封装
- 神经网络正向反向传播算法
- Notification
- Shader记录0912
- 学习SLAM预备知识
- HTML标签
- JavaScript window、location对象基础知识整理
- Android LayoutParams
- Android要点记录