com组件对象模型
2.COM接口的定义和标识 3.COM接口的内存模型 COM对象往往有自己的属性数据,这些属性数据反映了对象的状态,也正是通过这些属性数据,才反映了对象与对象的不同。 4.COM接口的特点 二进制特性 接口的不变性 继承性(扩展性) 多态性——运行过程中的多态性 5.4.3 IUnknown接口 COM定义的每一个接口都必须从IUnknown继承过来,其原因在于IUnknown接口提供了两个非常重要的特性: ①生存期控制; ②接口查询 ; 客户需要控制对象 如果继续对对象进行操作,则它必须保证对象能一直存在于内存中;如果操作已经完成,以后也不再需要该对象了,则它必须及时地把对象释放掉,以提高资源的利用率 。 首先来看一下IUnknown的定义(IDL): interface IUnknown { HRESULT QueryInterface([in]REFIID iid,[out] void * * ppv); ULONG AddRef(void); ULONG Release(void); } QueryInterface用于查询COM对象的其他接口指针, AddRef和Release用于对引用计数进行操作 1.引用计数 COM采用了“引用计数”技术来解决内存管理的问题,决定是否继续生存下去。“引用计数”是一个数值,该数值的含义为有多少个有效指针在引用该COM对象。 当客户得到了一个指向该对象的接口指针时,引用计数值增1;当客户用完了该接口指针后,引用计数减1。 当引用计数减到0时,COM对象就应该把自己从内存中清除掉。 2.引用计数的实现 问题:在什么层次上进行引用计数呢? 按照COM规范,一个COM组件可以实现多个COM对象,并且每个COM对象又可以支持多个COM接口,可以有以下三种方法: (1) 组件引用计数 (2) 对象引用计数 (3) 接口引用计数, * 5.4 COM编程技术 COM(Component Object Model,组件对象模型)。作为一个真正意义上的组件,应具备如下特征: ①实现了对开发语言的封装。 ②以二进制形式发布。 ③能够在不妨碍已有用户的情况下被升级。 ④在网络上的位置必须能够被透明的重新分配。 5.4.1 COM对象 COM是面向对象的软件模型,在COM中,对象是某类组件的一个实例。 COM对象的应用者——应用程序则称为客户。 每个COM组件对象都拥有一个以上的接口,COM对象可通过一个或多个接口与客户进行交互。 在COM模型中,由COM对象实现的每一个接口,都分别由一个128位的二进制全局统一标识符GUID(Globally Unique IDentifier)来标识。 GUID是一个随机数,并不绝对保证唯一性,但发生标识符相重的可能性非常小。从理论上讲,如果一台机器每秒产生10 000 000个GUID,则可保证(概率意义上)3240年不重复。 下面是一个GUID的例子。 {54BF6567-1007-11D1-B0AA444553540000} 在C/C++中可以用这样的结构来描述: Typedef struct_GUID { DWORD Data1; WORD Data2; WORD Data3; BYTE Data4[8]; }GUID 于是前面的GUID例子可以定义为 extern C const GUID CLSID_MYSPELLCHECKER= {0x54BF6567,0x 1007,0x 11D1, 0x B0,0x AA,0x 44,0x 45,0x 53,0x54,0x00,0x00} COM库提供的API函数可产生GUID: HRESULT CoCreateGuid(GUID *pguid); 如果GUID创建成功,则函数返回S_OK,并且pguid将指向所得到的GUID值。 5.4.2 COM接口 1.从API到COM接口 平面型的API接口存在以下一些问题: 当API函数非常多时,使用非常不方便,需要对函数进行组织。 API函数需要标准化,按照统一的调用方式进行处理,以适应不同的语言编程实现。 图5.8 应用程序A和B通过API接口共用一个字典组件 应用A 或组件A API 字典 组件 应用B 或组件B 图5.9 COM接口结构 指针 对 象 实 现 接口指针 pvtable vtable 指针函数1 ┋ 指针函数1 指针函数1 *
您可能关注的文档
最近下载
- T-CCSAS 062-2026《行为安全观察与沟通实施指南》.pdf VIP
- 中医基础理论考试题库及答案(2).docx VIP
- 山东省烟台市2025-2026学年高三上学期1月期末考试历史(含答案).pdf
- 2025小学综合实践课新课标测试题含答案.docx VIP
- 青年女性肌力身体成分与骨密度的关联性研究-中国康复医学杂志.PDF VIP
- 基于4p理论的成都城市名人酒店营销策略及现状分析.docx VIP
- 中医基础理论考试题库及答案(5).docx VIP
- 个人简历表格填写2021简历模板.docx VIP
- 药事法律法规试题及答案.docx VIP
- 一元高次方程的韦达定理及其应用.doc VIP
原创力文档

文档评论(0)