资料收集站

SDL

Wednesday
Dec 03rd
Text size
  • Increase font size
  • Default font size
  • Decrease font size

理解 Symbian 中的 ECom

Symbian 中也有类似Windows COM的机制,用来作为二进制的模块间接口标准。
ECom比起windows COM来要简单得多,没有GUID 没有IUnknown,没有marshal,没有其他好多东西。。。

那么,,,还剩下什么呢?逐个说一下

首先 和COM一样你的DLL要注册,这样别人才能找到你,不同的是,不是注册到注册表,DLL也没有引出注
册反注册的函数(没有类似DllRegisterServer and DllUnregisterServer的东西),而是写一个RSS文件,
里面写上你的ECom的注册信息,这个RSS文件编译后生成RSC文件,放到系统的ECom插件注册目录下,这样
系统就可以通过这个文件中的信息找到你的ECom DLL.这个RSS不难写,基本上抄一个改个ID就好了。
唯一要注意的是,RSS编译后产生的RSC文件名要和DLL文件名一样。

*注意: 这里的RSS和Blog那个rss不是一个概念,Symbian 里面的资源文件的展名就是RSS。

然后,你的DLL必须实现一个引出函数

EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount);

这是必须的,这个函数返回一个结构数组,描述了这个DLL所包含的所有对象的ID 和 工厂函数的指针。
通常这个函数是返回一个DLL里的全局变量比如:
const TImplementationProxy ImplementationTable[] =
    {
    IMPLEMENTATION_PROXY_ENTRY(0x13457890, CFoo::NewL)
    }; 

CFoo::NewL会返回一个,CFoo*,而CFoo一定是实现了 ID 0x13457890 对应的接口。

就是这么简单,和Windows的COM比起来非常原始,但是ECom在Symbian 和 S60里面应用非常广泛。
因为手机系统需要极强的定制能力,大多数功能都是靠ECom实现的,不同版本的差异很多是靠发行
的时候采用不同的ECom来做的。ECom的DLL在制作成手机的ROM的时候和其他一般的DLL是有些不
一样的,ECom会拥有一个单独的区域,并且编制索引来保证ECom的加载会比其他DLL要快一些。
所以有些时候会把一些数据文件做成ECom,就是因为加载比较快。

最后借这里放个招聘广告,如果你对于手机平台,Symbian 系统开发有兴趣,想深入了解S60,甚至希望
参与到S60的设计和开发,或者对于s60相关的项目管理有兴趣。现在有个不错的工作机会,不要求你有
Symbian或者手机平台的开发经验,但需要你对技术有热情。

Software Engineer
http://careers.nokia.com/nokia/hr/recrsyst.nsf/WB2RR/C31D75074228F5F6C22572BF0028BCAD?OpenDocument&Lang=Global

Project Manager
http://careers.nokia.com/nokia/hr/recrsyst.nsf/WB2RR/749DDCA528A35375C22572BF00285178?OpenDocument&Lang=Global

 

来源:http://blog.joycode.com/yaodong/archive/2007/07/13/105357.aspx

Comments (0)Add Comment

Write comment

busy
 

Google 搜索

在线用户

We have 54 guests online