分享
 
 
 

我对COM的理解

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

COM,组件对象模型,通俗说就是COM就是提供了一种编程的架构。通过COM规范规定了COM组件应该实现的

一些接口和接口函数,其他程序通过固定的方法使用这些函数,在Windows平台下,所谓的固定方法通过提供

的各种GUID在注册表中找到COM组件,然后调用指定的DLL或者EXE(通过ROT)调用指定的函数,以获得所需要的

接口的指针,所谓的接口的指针其实就是指向函数指针数组的指针,通过接口指针调用COM组件提供的服务。

如果不借助ATL等类库等实现COM组件,其实也很简单,只需要牢记下面几点就可以了:

1、使用IDL在idl文件中定义接口。因为COM是与语言无关的,所以需要一种各种语言等能懂的语言来定义

接口。使用MIDL编译编写好的idl文件可以获得一个.h文件,从此文件中就可以看出在idl文件中定义的

接口被编译成了C++中的纯虚类。从这里也可以得到:

A、纯虚类的内存结构确实是和COM所要求的内存结构相同,所以使用纯虚类来定义COM接口;

B、其实可以不需要idl文件直接使用C++语言定义COM接口,那又为什么需要呢?简单言之,就是为了

实现COM的语言无关性。使用C++定义的接口不能被其他语言所使用,当使用IDL语言编写的idl文件

被MIDL编译之后可以生成一个.tlb的类型库文件,此文件可以被其他语言使用。

2、接口的实现其实很简单,就是在继承了所定义的接口的派生类当中实现就可以了。一个派生类可以继承

自多个接口。为了实现一些功能可以继承自一些标准的COM接口,比如:IDispatch、IMarshl等,但是一般

都需要实现IClassFactory或者IClassFactory2接口。类厂接口的作用是提供一个通用的创建组件对象的

方法。对于进程内组件在C++中我们可以使用new来创建新的对象,但是对于进程外或者是远程的组件,new

好像是无能为力了,所以提供类厂接口,由类厂和代理打交道来完成对象的创建。

3、组件程序中实现相关的导出函数,以便被其他应用程序调用,比如注册函数、生命周期控制函数等等。

4、最后要牢记如果要有不清楚的地方多看MSDN,熟记一些常用的标准接口,对于套间、列集等要特别注意。

无论是在MFC中使用嵌套类来实现COM,还是ATL中使用的多重继承来实现COM,抑或是使用ODL语言来编写

接口的定义,其最基本都是上面所说的,只不过MFC和ATL中多了一些宏来替代直接使用C++编写的各种类定义、

函数定义等,这样使程序看起来简洁,但是对于认识COM的原理其实并没有好处,所以在使用这些宏的时候看看

它们的定义会帮助你更深刻的认识COM。ODL语言只是IDL语言的扩充,其实没有什么特别的地方,只要多看看,

弄懂了一些关键字的意思就可以了,比如:interface、dispinterface、coclass、import、library、

importlib、defult等等。

总之要想深刻的认识COM,熟练的使用COM编程,就要如Don所说,多动手编程,多使用它们,并考虑它们

是如何的工作起来的。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有