进程间通信之内存共享

进程A和进程B之间共享如下一个struct:

 struct  m_MapView_Struct{
  char m_c;
  int m_iMapView;
  char m_pszMapView[MAX_BUFFER_SIZE];
  char m_pszMapView2[MAX_BUFFER_SIZE];
 }* m_pSMapView;
 

 

进程A中:

 m_hMapObject=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,
  PAGE_READWRITE, 0, 0x1000, _TEXT("shared_memory"));
 
 if(!m_hMapObject){
  AfxMessageBox("Unable to create shared memory file.");
  return FALSE;
 }

 // Map view of file into our address space.
 m_pSMapView=(m_MapView_Struct *)MapViewOfFile
  (m_hMapObject,FILE_MAP_WRITE, 0, 0,0);

 if(m_pSMapView==NULL){
  AfxMessageBox("Unable to map shared memory file.");
  return FALSE;
 }

 m_pSMapView->m_iMapView = 13628;
 m_pSMapView->m_c = '*';
 lstrcpy(m_pSMapView->m_pszMapView, "c++");
 lstrcpy(m_pSMapView->m_pszMapView2, "stl wlt atl");

进程B中:

 // Open memory mapped file.
 m_hMapObject=OpenFileMapping(FILE_MAP_READ,FALSE,_TEXT("shared_memory"));
   
 if(!m_hMapObject){
  AfxMessageBox("Can't open shared memory file,please run 'Send' first.");
  SendMessage(WM_CLOSE);
  return FALSE;
 }
 
    // Get pointer to shared data.
 m_pSMapView=(m_MapView_Struct *)MapViewOfFile
  (m_hMapObject,FILE_MAP_READ, 0, 0,0);

 if(m_pSMapView==NULL)
  AfxMessageBox("Can't map view of shared memory file.");

 m_strText.Format("%d,%s,%s,%c",m_pSMapView->m_iMapView,  m_pSMapView->m_pszMapView
  ,m_pSMapView->m_pszMapView2  ,m_pSMapView->m_c);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值