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 [复制链接] [打 印]
赞助商链接