Windows CE下使用共享内存实现进程间数据交换
2007-06-12 18:45
302 查看
很多项目需要有多个独立的程序共同工作,在这些程序之间交换数据,比较方便的方法之一就是使用共享内存。
和在Windows平台上类似,WinCE下也提供了一系列内存映射函数来实现共享内存的创建和访问。
假设有两个进程需要共享一段大小为4096字节的数据。
其中的一个进程要先创建这个共享内存区域
hMemoryMap = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE | SEC_COMMIT, 0, 4096, L"DataMap");
if (hMemoryMap != NULL)
{
lpData = (LPBYTE)MapViewOfFile(hMemoryMap, FILE_MAP_WRITE, 0, 0, 0);
if (lpData == NULL)
{
CloseHandle(hMemoryMap);
hMemoryMap = NULL;
}
}
对lpData指针进行操作就可以读写这段共享内存的数据。
另外一个进程就可以依据"DataMap"这个名称来打开以及访问这段共享内存,注意Windows CE上是没有OpenFileMapping函数的。
m_hMemoryMap = CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,4096,L"DataMap");
if (m_hMemoryMap == NULL)
{
AfxMessageBox(L"CreateFileMapping Failed!");
return;
}
m_lpbReceiveBuf = (LPBYTE)MapViewOfFile(m_hMemoryMap,FILE_MAP_READ,0,0,0);
if (m_lpbReceiveBuf == NULL)
{
CloseHandle(m_hMemoryMap);
m_hMemoryMap=NULL;
AfxMessageBox(L"MapViewOfFile Failed!");
return;
}
这样,这个“客户”进程就可以通过m_kpbReceiveBuf来访问这段共享内存。实现了内存的跨进程共享。更进一步的,可以通过互发消息的方式来在两个程序之间互相通知对方对数据的改变。
附件为示例代码。http://download1.csdn.net/down3/20070612/12184443926.rar
和在Windows平台上类似,WinCE下也提供了一系列内存映射函数来实现共享内存的创建和访问。
假设有两个进程需要共享一段大小为4096字节的数据。
其中的一个进程要先创建这个共享内存区域
hMemoryMap = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE | SEC_COMMIT, 0, 4096, L"DataMap");
if (hMemoryMap != NULL)
{
lpData = (LPBYTE)MapViewOfFile(hMemoryMap, FILE_MAP_WRITE, 0, 0, 0);
if (lpData == NULL)
{
CloseHandle(hMemoryMap);
hMemoryMap = NULL;
}
}
对lpData指针进行操作就可以读写这段共享内存的数据。
另外一个进程就可以依据"DataMap"这个名称来打开以及访问这段共享内存,注意Windows CE上是没有OpenFileMapping函数的。
m_hMemoryMap = CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,4096,L"DataMap");
if (m_hMemoryMap == NULL)
{
AfxMessageBox(L"CreateFileMapping Failed!");
return;
}
m_lpbReceiveBuf = (LPBYTE)MapViewOfFile(m_hMemoryMap,FILE_MAP_READ,0,0,0);
if (m_lpbReceiveBuf == NULL)
{
CloseHandle(m_hMemoryMap);
m_hMemoryMap=NULL;
AfxMessageBox(L"MapViewOfFile Failed!");
return;
}
这样,这个“客户”进程就可以通过m_kpbReceiveBuf来访问这段共享内存。实现了内存的跨进程共享。更进一步的,可以通过互发消息的方式来在两个程序之间互相通知对方对数据的改变。
附件为示例代码。http://download1.csdn.net/down3/20070612/12184443926.rar
相关文章推荐
- Windows CE下使用共享内存实现进程间数据交换
- Windows CE下使用共享内存实现进程间数据交换
- 共享内存实现进程间大数据的交换
- Android应用层使用共享内存机制进行进程间交换数据
- Android应用层使用共享内存机制进行进程间交换数据
- 共享内存实现进程间大数据的交换
- 共享内存实现进程间大数据的交换
- 共享内存实现进程间大数据的交换
- Android应用层使用共享内存机制进行进程间交换数据
- 共享内存实现进程间大数据的交换
- Android Binder机制实现进程间数据交换(不使用aidl实现)
- linux 内核进程与用户进程的通信 方法一 使用sockopt与内核交换数据
- 共享内存实现进程间大数据的交换
- 使用共享内存在进程之间传送数据
- 安卓使用aidl实现两个程序之间的数据交换
- JSON 、使用JSON实现数据交换 、jQuery对AJAX的支持
- 0907使用write函数向共享内存中写入数据,实现不同进程间的数据信息传递
- 使用存储过程实现数据的交换
- Android:使用AIDL实现进程间传递复杂数据类型
- Unit02: JSON 、 使用JSON实现数据交换 、 jQuery对AJAX的支持,编码问题