分享
 
 
 

《COM技术内幕学习笔记》

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

《COM技术内幕学习笔记》

说是学习笔记实际上是文中一些,自己觉得重要的地方的摘录。。觉得写的很不错。最近一段时间。自己接触到的一个有关COM 思想的东西。所以找了这本书来看看。顺便摘录其中的一些东西。和大家一起学习。

欢迎转载。唯一要求是请注明出处和作者。共同努力吧。

作者:苦孩子

blog地址:http://blog.csdn.net/kuhaizi

对com来说,接口是一个包含一个函数指针数组的内存结构。每一个数组元素包含的是一个由组件所实现的函数的地址。对于con而言,接口就是此内存结构,其他东西均是一个com并不关心的事先细节。

在C++中,可以使用抽象基类来实现COM接口。由于一个COM组件可以支持任意数目的接口,因此对于此类组件,我们将用抽象基类的多重继承来实现之。

实际上从一个程序员的角度来讲,接口对于一个应用程序而言是最重要的。组件本身只不过是接口的实现细节。

接口使得客户可以用同样的方式来处理不同组件。这种能力就被称作是多态。

纯抽象基类指的是仅包含纯抽象函数的基类。纯虚函数指用 = 0 标记的虚拟函数。在定义纯抽象函数的类中,是不实现这些纯虚函数的。纯虚函数将在派生类中实现。

多重继承指的是一个类直接继承了一个以上的基类。在C++中,大多数情况下人们使用的是单继承,也就是一个类只有一个基类。

可以将一个抽象类看作是一个表单。派生类所做的是填充此表单中的空白。抽象基类指定了其派生类应提供哪些函数,而派生类则具体实现这些函数。对纯虚函数的继承被称作是接口继承。这主要是因为派生类所继承的只是基类对函数的描述。抽象类并没有提供任何可供继承的实现细节。

由于com是与语言无关的,对于什么是接口,它有一个二进制的标准。也就是说,表示一个接口的内存块必须具有一定的结构。当使用纯抽象基类时,许多C++编译器将可以生成具有这种结构的内存块。

在使用M$ Win32开发工具时。

interface做为接口的定义。interface的定义在OBJBASE.H头文件中,定义如下:#define interface struct

使用struct的原因在于struct的成员将自动具有公有的属性。因此不需要另外在定义中加上public关键字。去掉public关键字可以减少一些混乱。

COM接口实现的精髓:

COM接口在C++中使用纯抽象基类实现的。

一个COM组件可以提供多个接口。

一个C++类可以使用多继承来实现一个可以提供多个接口的组件。

COM所使用的调用 标准约定

用__stdcall标记的函数将使用标准的调用约定,即这些函数将在返回到调用者之前将参数从栈中删除。Pascal函数对于栈的处理使用的也是同一种方式。在常规的C/C++调用约定中,栈的清理工作则是由调用者完成的。大多数其他编程语言。如VB缺省情况下使用的也是标准的调用约定。标准调用约定名称的由来在于所有的win32API函数。除了那些带有变参的外,使用的都是这种调用方式。带有变参的函数所用的仍然是C调用约定。即__cdecl。

Windows采用标准的调用约定的原因在于这种约定可以减少代码的大小。另外一个原因是早期的windows是运行于640KB的系统上的。

Microsoft平台上COM接口所提供的所有函数使用的均是标准的调用约定,参数数目可变的函数使用的则是C调用约定。一般人们希望接口的实现使用这些约定。但要说明的是这并不是COM的绝对需要。开发人员可以选择使用例外某些调用约定,但一定要在文档中将这一点写清楚。并且还要注意用其他语言所编写的组件可能并不能使用此接口。

同时,

pascal在WINDEF.H中定义为:

#define pascal __stdcall

在OBJBASE.H中也定义了如下的宏:

#define STDMETHODCALLTYPE __stdcall

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有