symbian进程间内存共享

      最近看了一些进程间通讯的资料,基本上原理是一样的,在一个线程开一个全局的服务,另外一个可以通过全名字,或者部分名字查找这个服务,然后取得这个全局服务的内存地址,得到内存中的数据。

      在symbian上有RChunk,RTread等类,但是在3rd fp1上取消了RTread的Read和Write方法,所以只能用RChunk类了,调用方法如下:

       一个线程启动服务:

       _LIT(KChunkName,"xn Globla Chunk");
       TInt rc=iChk.CreateGlobal(KChunkName,0x1000,0x5000); 

       //取得共享内存地址

       TUint8* uid=iChk.Base();
       HBufC* buf=HBufC8::NewL(255);
       buf->Des().Copy(_L8("123456"));
      
       //uid=&(iHbuf->Des()[0]);
       //将数据放入到共享内存中

       TPtrC8 ptr;
       Mem::Copy(uid,(TAny *)buf->Des().Ptr(),buf->Length());
       //服务线程ok

 

      另外线程:

      _LIT(KChunkName,"xn Globla Chunk");
      RChunk chk;
      chk.OpenGlobal(KChunkName,0);//第一个参数指定了全局内存块的名称,第二个参数用于说明块是为只读(1)还是可写的(0)
      TUint8* uid=chk.Base();
      TPtrC8 ptr;
     //Mem::Copy(uid,(TAny *)iHbuf->Des().Ptr(),iHbuf->Length());
     ptr.Set( (const TUint8*)uid , chk.Szie());

     //ok 共享内存中的数据取到了,当然也可以修改。

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值