关于进程或线程间通信(利用内存映射)vc++ 6.0

关于进程或线程间通信(利用内存映射)vc++ 6.0

  • 2008年12月14日 16:56 amwscxk 用户奖牌用户奖牌用户奖牌用户奖牌用户奖牌
     

      struct   SData  
      {  
      int   m_name;  
      BOOL   m_data;  
      }; 

     

    写入内存映射内容代码

     int iLengByte=sizeof(SData);        
      LPBYTE lpData;        
      //创建一个文件映射内核对象以告诉系统文件的尺寸以及访问文件的方式  
      HANDLE hMap=CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE|SEC_COMMIT,0,iLengByte,"S_DATA");        
      if (hMap!=NULL)        
      {        
      //将文件映射对象的全部或部分映射到进程地址空间  
      lpData =(LPBYTE)MapViewOfFile(hMap,FILE_MAP_WRITE,0,0,0);        
      if(lpData==NULL)        
      {        
      CloseHandle(hMap);        
      hMap =NULL;        
      return;        
      }        
      SData Data;        
      Data.m_name=6;
      Data.m_data=true;
      memcpy(lpData,(LPBYTE)(&Data),iLengByte);        
      }            

     

    读取内存映射内容代码

       SData data;        
      //打开内存映射文件  
      HANDLE m_hMap=OpenFileMapping(FILE_MAP_READ,FALSE,"S_DATA");        
      if (m_hMap==NULL) return;        
      //得到映射文件的地址  
      LPBYTE lpData=(LPBYTE)MapViewOfFile(m_hMap,FILE_MAP_READ,0,0,0);        
      if (lpData==NULL)        
      {        
      CloseHandle(m_hMap);            
      m_hMap=NULL;  
      return;        
      }          
      //得到映射文件中的数据  
      memcpy(&data,(SData*)(lpData),sizeof(SData));    
      int m_temp=data.m_name;
      BOOL m_temp1=data.m_data;
      CString ttt;
      ttt.Format("%d",m_temp);
      MessageBox(ttt);

     

    以上代码在VC++ 6.0中可以使用,现在我想把读取内存映射内容的代码改用vb代码。
    不知道该怎样写.希望可以回复vb代码.谢谢.

     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值