调用类厂的对象创建函数CreateInstance.pptVIP

  • 5
  • 0
  • 约6.2千字
  • 约 34页
  • 2017-08-10 发布于天津
  • 举报
调用类厂的对象创建函数CreateInstance

中间件技术 第三章 COM相关技术 知识点: COM结构 COM组件 COM对象 COM接口 COM库 COM类工厂 开发实例 核心概念 COM组件客户:组件的调用者,是应用程序中直接与用户交互的界面和调用组件的程序框架。 组件服务器:通过若干个COM对象来实现应用程序所需的功能。 COM组件:具有一定逻辑功能的可执行代码,是组成应用程序的构件。 COM对象:类似C++,每一个COM对象是一个特定类的实例,支持一个或多个接口。 COM接口:是一组逻辑上相关的函数集合,即接口成员函数,它提供给客户各种形式的服务,实现各种功能,是组件与外界交互的通道。 COM技术的体系结构 COM基础结构 COM技术的体系结构 COM客户与组件服务器之间的交互过程 COM技术的体系结构 COM基础结构 3.3 COM技术中的接口(续) IUnknown接口 COM定义的每一个接口都必须从IUnknown接口继承而来。 IUnknown接口具有生存期控制和接口查询功能。 QueryInterface、AddRef和Release,共同完成接口的自管理任务。 QueryInterface函数用于查询COM对象的其他接口指针,实现接口查询功能。 函数AddRef和Release用于对引用计数进行操作,从而控制对象的生存周期。 根据COM规范,一个COM对象若实现了多个接口,则可从某个接口得到该对象的任意其他接口。 3.3 COM技术中的接口(续) 实现引用计数 按照COM规范,一个COM组件可以实现多个COM对象,并且每个COM对象又可以支持多个COM接口,这中层次结构为实现引用计数提供了多种选择方案。 ⑴COM组件一级实现引用计数。 设置一个针对整个组件全局的引用计数。 计数分辨率太粗。 ⑵COM对象一级实现引用计数。 利用成员变量,为每个COM对象设置一个引用计数。 组件程序应保持一份有效对象的纪录。 ⑶接口一级实现引用计数。 三级计数控制。 计数分辨率太细。 3.3 COM技术中的接口(续) 引用计数 COM采用“引用计数”技术来解决内存管理的问题,它可以有效地控制对象的生存周期。 每一个COM对象都记录了一个称为“引用计数”的数值,该数值的含义为有多少个有效指针在引用该COM对象。 当客户得到了一个指向该对象的接口指针时,引用计数值增1,用完后,引用计数减1。 IUnknown的接口成员函数AddRef和Release分别完成引用计数的增1和减1操作。 3.3 COM技术中的接口(续) 引用计数规则 ⑴函数的参数中使用接口变量。 ⑵局部接口指针变量。 ⑶全局接口指针变量 ⑷类成员变量为接口指针变量。 ⑸一般性原则: 在顺序执行过程中,如果要对一个接口指针变量赋值,则对赋值后的接口指针变量调用AddRef,并且,如果赋值前的接口指针变量还没有结束,则赋值前必须对它调用Release以便先结束它的使用。 如果要结束使用一个接口指针变量,以后不再用到它了,则调用Realease函数。 3.3 COM技术中的接口(续) 接口查询 按照COM规范,一个COM对象可以实现多个接口,客户程序可以在运行时刻对COM对象的接口进行询问。 当客户创建一个COM对象后,创建函数会返回一个接口指针,通过QueryInterface函数就可获得该对象所支持的任何一个接口指针。 函数说明: HRESULT QueryInterface([in]REFIID iid,[out]void * * ppv) 输入参数iid:接口标识符 输出参数ppv:查询得到的结果接口指针 3.3 COM技术中的接口(续) 接口查询返回值 HRESULT QueryInterface([in]REFIID iid, [out]void * * ppv) ⑴S_OK,查到了指定的接口,接口指针存放在ppv输出参数中; ⑵E_NOINTERFACE,对象不支持所指定的接口,*ppv为NULL; ⑶E_UNEXPECTED,发生了意外错误,*ppv为NULL。 3.3 COM技术中的接口(续) 接口查询返回值 HRESULT QueryInterface([in]REFIID iid, [out]void * * ppv) 例:IUnknown *pUnknown; IMath *IMathAdd = NULL; hr = pUnknown-QueryInterface (IID_IMath , (void **)IMathAdd); 3.3 COM技术中的接口(续) 接口原则 ⑴每个对象的IUnknown接口指针是唯一的。

文档评论(0)

1亿VIP精品文档

相关文档