您好,欢迎访问三七文档
ComponentObjectModel(COM——组件对象模型)组件对象模型,一种面向对象的编程模式。它定义了对象在单个应用程序内部或多个应用程序之间的行为方式。英文为ComponentObjectModel,缩写COM,是微软对于网页服务器与客户端、增益集与Office系列软件之间交互的一项软件组件技术。简单的说组件对象模型(COM)是一种开发应用程序接口的标准。COM把软件应用分成了两大部分:COM服务器和COM客户。具有符合COM标准的接口软件叫做组件。组件类,组件对象,组件服务器由一个或多个抽象类派生出来,并实现了抽象基类的各个纯虚函数的类叫COM类,或组件类。组件类的实例,叫做组件对象或COM对象。含有一个或多个组件类的DLL或EXE叫做COM服务器或组件,当然也可以这样说,可以提供一个或多个组件对象的DLL和EXE叫做COM服务器或组件。在COM技术中使用注册表存储关于组件的信息。客户可以再注册表中搜索它需要的组件。组件吧标识,存放位置等信息登记到系统的注册表中,即得进行注册。COM规定的标准服务COM规定,一个功能完善的组件至少应该有IUnknown,IClassFactory和IDispatch三个接口(作为约定,COM中所有接口名称都以字母“I”开头)。IUnknown为提供基本服务接口,组件上的其余接口都由IUnknown派生。客户同组件的交互都是通过一个接口完成的。在客户查询组件的其他接口时,也是通过接口完成的。这个接口就是IUnknown。所有的COM接口都继承了IUnknown,每个接口的vtbl中的前三个函数都是QueryInterface、AddRef、Release。这样所有COM接口都可以被当成IUnknown接口来处理。1.ClassIUnknown2.{3.public:4.5.virtualHRESULT_stdcallQueryInterface(6.ConstIID&iid,void**ppv)=0;7.8.virtualULONG_stdcallAddRef(void)=0;9.10.virtualULONG_stdcallRelease(void)=0;11.12.};IUnknown定义了接口查询函数QueryInterface()HRESULTQueryInterface(constIID&iid,//需要查询接口的IDvoid**ppv//查询后得到的接口指针);参数:iid[in]指明需要查询的接口的IID.ppvObject[out]按第一个参数查询后得到的接口指针,该指针指向了这个接口的虚函数表,而在这个虚函数表中存放的就是该接口中函数的指针IUnknown中AddRef、Release函数是用来控制组件对象生存周期。组件对象内设置了一个计数器,当客户程序在引用组件对象时,客户就调用AddRef()把计数器的值加1;当客户不再引用该组件对象时,客户调用Release,计数器减1.类工厂接口IClassFactory调度接口IDispatch使用ATL设计组件鼠标右键点击工作区间的IFirst,选择AddMethod方法输入名称:AddNumbers输入参数:[in]longNum1,[in]longNum2,[out]long*ReturnVal实现接口函数。
本文标题:组件对象模型
链接地址:https://www.777doc.com/doc-2057698 .html