COM组件编程基础

上传人:王**** 文档编号:334217292 上传时间:2022-09-05 格式:PPT 页数:78 大小:3.49MB
返回 下载 相关 举报
COM组件编程基础_第1页
第1页 / 共78页
COM组件编程基础_第2页
第2页 / 共78页
COM组件编程基础_第3页
第3页 / 共78页
COM组件编程基础_第4页
第4页 / 共78页
COM组件编程基础_第5页
第5页 / 共78页
亲,该文档总共78页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《COM组件编程基础》由会员分享,可在线阅读,更多相关《COM组件编程基础(78页珍藏版)》请在金锄头文库上搜索。

1、10.1 COM10.1 COM简介简介一、什么是一、什么是一、什么是一、什么是COMCOMCOMCOM COM COM COM COM(Component Object ModelComponent Object ModelComponent Object ModelComponent Object Model):):):):组件对象模型组件对象模型组件对象模型组件对象模型 其中:其中:其中:其中:1.1.1.1.它定义了一套为构建一个组件所必需遵循的规则。或它定义了一套为构建一个组件所必需遵循的规则。或它定义了一套为构建一个组件所必需遵循的规则。或它定义了一套为构建一个组件所必需遵循的规则

2、。或 者说它是一个说明如何建立可动态交替更新组件的规者说它是一个说明如何建立可动态交替更新组件的规者说它是一个说明如何建立可动态交替更新组件的规者说它是一个说明如何建立可动态交替更新组件的规 范,该规范为客户和组件提供保证能够互操作应该遵范,该规范为客户和组件提供保证能够互操作应该遵范,该规范为客户和组件提供保证能够互操作应该遵范,该规范为客户和组件提供保证能够互操作应该遵 循的标准;循的标准;循的标准;循的标准;2.2.2.2.它定义了组件和它们的客户之间互相作用的方式。采它定义了组件和它们的客户之间互相作用的方式。采它定义了组件和它们的客户之间互相作用的方式。采它定义了组件和它们的客户之间

3、互相作用的方式。采 用客户进程直接调用组件中的方法,使得组件和客户用客户进程直接调用组件中的方法,使得组件和客户用客户进程直接调用组件中的方法,使得组件和客户用客户进程直接调用组件中的方法,使得组件和客户 端无需任何中介组件就能互相联系;端无需任何中介组件就能互相联系;端无需任何中介组件就能互相联系;端无需任何中介组件就能互相联系;3.COM3.COM3.COM3.COM组件有可执行代码组成,即以二进制代码形组件有可执行代码组成,即以二进制代码形组件有可执行代码组成,即以二进制代码形组件有可执行代码组成,即以二进制代码形 式重用,一般通过式重用,一般通过式重用,一般通过式重用,一般通过DLL/

4、EXEDLL/EXEDLL/EXEDLL/EXE形式发布,且通过形式发布,且通过形式发布,且通过形式发布,且通过GUIDGUIDGUIDGUID 来保证每个来保证每个来保证每个来保证每个COMCOMCOMCOM对象是全球唯一的。对象是全球唯一的。对象是全球唯一的。对象是全球唯一的。说明:说明:说明:说明:1.COM1.COM1.COM1.COM不是一类程序的扩展名,也不是一种程序设计不是一类程序的扩展名,也不是一种程序设计不是一类程序的扩展名,也不是一种程序设计不是一类程序的扩展名,也不是一种程序设计 语言;语言;语言;语言;2.COM 2.COM 2.COM 2.COM可利用可利用可利用可利

5、用DLLDLLDLLDLL来给组件提供动态链接的能力,但来给组件提供动态链接的能力,但来给组件提供动态链接的能力,但来给组件提供动态链接的能力,但 COM COM COM COM不是不是不是不是DLLDLLDLLDLL;3.COM 3.COM 3.COM 3.COM可采用各种语言进行编写(语言无关性),同一可采用各种语言进行编写(语言无关性),同一可采用各种语言进行编写(语言无关性),同一可采用各种语言进行编写(语言无关性),同一 个软件中不同组件可以使用不同的语言和工具开发个软件中不同组件可以使用不同的语言和工具开发个软件中不同组件可以使用不同的语言和工具开发个软件中不同组件可以使用不同的语

6、言和工具开发;4.COM 4.COM 4.COM 4.COM是由是由是由是由OLEOLEOLEOLE(对象连接与嵌入)技术发展而来,(对象连接与嵌入)技术发展而来,(对象连接与嵌入)技术发展而来,(对象连接与嵌入)技术发展而来,COM COM COM COM技术的目的是为开发、维护应用程序提供高效灵技术的目的是为开发、维护应用程序提供高效灵技术的目的是为开发、维护应用程序提供高效灵技术的目的是为开发、维护应用程序提供高效灵 活手段活手段活手段活手段二、二、COMCOM服务器、服务器、COMCOM对象、对象、COMCOM接口和函数的关系接口和函数的关系 1.1.一个一个COMCOM服务器(服务器

7、(DLLDLL或或EXEEXE)可以包含若干个)可以包含若干个 COM COM对象;对象;2.2.一个一个COMCOM对象可以包含若干个接口;对象可以包含若干个接口;3.3.一个接口可以包含若干个函数。一个接口可以包含若干个函数。COM服务器服务器COM对象对象1接口接口1函数函数1函数函数2接口接口2函数函数1COM对象对象2接口接口1函数函数1函数函数2函数函数3IInterface_1IInterface_2COM服务器服务器接口对象接口对象1函数函数1函数函数2接口对象接口对象2函数函数1IUnknown说明:一般将说明:一般将COMCOM对象表示为带固定格式的圆形接头,对象表示为带固

8、定格式的圆形接头,每个接头表示一个对外提供的接口,每个接头表示一个对外提供的接口,IUnknownIUnknown接接 口处首要地位口处首要地位.三、接口接口 1.COM1.COM接口提供访问对象的一种方式,应用程序只能通过一个接接口提供访问对象的一种方式,应用程序只能通过一个接 口指针访问对象的函数。口指针访问对象的函数。COMCOM接口由一个接口由一个全全全全 局唯一标识符局唯一标识符局唯一标识符局唯一标识符 (GUIDGUIDGUIDGUID)IIDIIDIIDIID来区分和确定。来区分和确定。来区分和确定。来区分和确定。2.2.所有所有COMCOM接口都从接口都从IUnknownIUn

9、known接口派生接口派生 struct IUnknown struct IUnknown struct IUnknown struct IUnknown virtual LONG QueryInterface(REFIID riid,void *ppv)=0;virtual LONG QueryInterface(REFIID riid,void *ppv)=0;virtual LONG QueryInterface(REFIID riid,void *ppv)=0;virtual LONG QueryInterface(REFIID riid,void *ppv)=0;virtual UL

10、ONG AddRef(void)=0;virtual ULONG AddRef(void)=0;virtual ULONG AddRef(void)=0;virtual ULONG AddRef(void)=0;virtual virtual virtual virtual ULONGULONGULONGULONG Release(void)=0;Release(void)=0;Release(void)=0;Release(void)=0;其中:其中:QueryInterfaceQueryInterfaceQueryInterfaceQueryInterface通过接口标识符通过接口标识符通

11、过接口标识符通过接口标识符riidriidriidriid查询(确定)接口,返回查询(确定)接口,返回查询(确定)接口,返回查询(确定)接口,返回 指向接口的指针的指针,同时调用指向接口的指针的指针,同时调用指向接口的指针的指针,同时调用指向接口的指针的指针,同时调用AddRef()AddRef()AddRef()AddRef();AddRef AddRef AddRef AddRef和和和和ReleaseReleaseReleaseRelease用来管理对象接口被访问的参数计数。调用这用来管理对象接口被访问的参数计数。调用这用来管理对象接口被访问的参数计数。调用这用来管理对象接口被访问的参数

12、计数。调用这两种方法的规则为:设两种方法的规则为:设两种方法的规则为:设两种方法的规则为:设N NN N为接口被访问的计数器。为接口被访问的计数器。为接口被访问的计数器。为接口被访问的计数器。无论何时客户接收到接口指针时,必须调用无论何时客户接收到接口指针时,必须调用无论何时客户接收到接口指针时,必须调用无论何时客户接收到接口指针时,必须调用AddRefAddRefAddRefAddRef:N+N+N+N+无论何时客户完成使用接口指针时,必须调用无论何时客户完成使用接口指针时,必须调用无论何时客户完成使用接口指针时,必须调用无论何时客户完成使用接口指针时,必须调用Release Release

13、 Release Release:N-N-N-N-其目的是管理被使用的其目的是管理被使用的其目的是管理被使用的其目的是管理被使用的COMCOMCOMCOM何时能够被释放:当何时能够被释放:当何时能够被释放:当何时能够被释放:当N=0N=0N=0N=0时时时时 UUID/GUIDUUID/GUIDUUID/GUIDUUID/GUID:Universally/Globals Unique IDentifiersUniversally/Globals Unique IDentifiersUniversally/Globals Unique IDentifiersUniversally/Globals

14、 Unique IDentifiers 通用通用通用通用/全局(球)唯一标识符(全局(球)唯一标识符(全局(球)唯一标识符(全局(球)唯一标识符(128128128128位,位,位,位,1616字节字节字节字节 ,32 32 32 32个字符)个字符)个字符)个字符)GUID GUID GUID GUID 的格式为:的格式为:的格式为:的格式为:“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”xxxxxxxx-xxxx-

15、xxxx-xxxx-xxxxxxxxxxxx”其中每个其中每个其中每个其中每个 x x x x 是是是是 0-9 0-9 0-9 0-9 或或或或 A-FA-FA-FA-F范围内的一个十六进制的数字。范围内的一个十六进制的数字。范围内的一个十六进制的数字。范围内的一个十六进制的数字。例如:例如:例如:例如:97AD6FA3-8CAD-4068-90AE-320545A1E8C897AD6FA3-8CAD-4068-90AE-320545A1E8C897AD6FA3-8CAD-4068-90AE-320545A1E8C897AD6FA3-8CAD-4068-90AE-320545A1E8C8 即

16、为有效的即为有效的即为有效的即为有效的 GUID GUID GUID GUID 值值值值。CLSID CLSID CLSID CLSID:COMCOMCOMCOM类标识符(类标识符(类标识符(类标识符(CLASS IdentifiersCLASS IdentifiersCLASS IdentifiersCLASS Identifiers)LIBID LIBID LIBID LIBID:类型库标识符(:类型库标识符(:类型库标识符(:类型库标识符(type LIBrary Identifiertype LIBrary Identifiertype LIBrary Identifiertype LIBrary Identifier)IID IID IID IID:接口标识符(:接口标识符(:接口标识符(:接口标识符(Interface IdentifiersInterface IdentifiersInterface IdentifiersInterface Identifiers)ProgID ProgID ProgID ProgID:Programmer IDentifiersProg

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号