VC进程间共享内存的实现步骤

李国帅 编2007年9月

程序1 -- 建立共享区:


HANDLE m_hMapFile=CreateFileMapping(  //创建一个有名的共享内存
    (HANDLE)0xFFFFFFFF, //0xFFFFFFFF表示创建一个进程间共享的对象
    NULL,
    PAGE_READWRITE,  //读写共享
    0,
    0x1000,       //共享区间大小4096
    _T("ShareName"));

void* m_pBaseMapFile=MapViewOfFile(  //映射到本进程的地址空间
    m_hMapFile,
    FILE_MAP_READ|FILE_MAP_WRITE,
    0,
    0,
    0);

unsigned char *p=(unsigned char*)m_pBaseMapFile;   //使用共享区
p[0]=00;
p[1]=11;
p[2]=22;

system(("pause"));
UnmapViewOfFile(m_pBaseMapFile); //取消本进程地址空间的映射:
CloseHandle(m_hMapFile);
程序2 -- 使用共享区:


HANDLE m_hMapFile =OpenFileMapping( //获得共享内存句柄
     FILE_MAP_WRITE,
     FALSE,
     _T("myfile"));

void *m_pBaseMapFile=MapViewOfFile( //映射到本进程的地址空间
     m_hMapFile,
     FILE_MAP_READ|FILE_MAP_WRITE,
     0,
     0,
     0);
unsigned char *p=(unsigned char*)m_pBaseMapFile;
//      CString s;//      s.Format("%#x: %d, %d, %d",p,p[0],p[1],p[2]); AfxMessageBox(s);
wstring s;     std::ostringstream oss;
oss<<p<<p[0]<<p[1]<<p[2]<<_T("\n");s=oss.str();cout>>s;//使用共享区
p[0]=33;
p[1]=44;  //修改共享区

system(("pause"));
UnmapViewOfFile(m_pBaseMapFile); //取消本进程地址空间的映射:
CloseHandle(m_hMapFile);
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微澜-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值