WEB开发网      濠靛倻鏅悵顖涚附閽樺鐎诲ù婊庡亾缁辨帗鎷呴悩鍨暠濞戞挴鍋撳ù鐘烘閸ㄥ孩绂嶉锝喰﹂柟瀛樺灣濠婃垿鎯冮崟顏嗩伇濞寸姾妫勬慨鈺呭礉濞戝磭骞㈤悹鍥у槻閸ㄥ孩绂嶉敓锟� ---闁挎洩鎷�
开发学院手机开发Symbian 开发 Symbian 进程间通信(共享数据) 阅读

Symbian 进程间通信(共享数据)

 2010-04-20 16:00:00 来源:WEB开发网 闁靛棴鎷�闁告垵绻愰惃顒傗偓娑欍仦缂嶏拷濠⒀呭仜閵囧洨鈧稒銇炵紞锟�闁靛棴鎷�  闁稿繗娅曢弫鐐哄级閵婏缚鑸瀣仧濞堟垵顕ラ鐓庤Е
核心提示:最近看了一些进程间通讯的资料,基本上原理是一样的,Symbian 进程间通信(共享数据),在一个线程开一个全局的服务,另外一个可以通过全名字,调用方法如下:一个线程启动服务:_LIT(KChunkName,”xn Globla Chunk”);TInt rc=iChk.CreateGlobal(KChunkName,0

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

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

一个线程启动服务:

_LIT(KChunkName,”xn Globla Chunk”);

TInt rc=iChk.CreateGlobal(KChunkName,0×1000,0×5000);

//取得共享内存地址

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 共享内存中的数据取到了,当然也可以修改。

Tags:Symbian 进程 通信

编辑录入:coldstar [复制链接] [打 印]
赞助商链接