北京大学:《组件技术》课程教学资源(讲义课件)第四讲 COM实现

COM实现 潘爱民 http:/www.icst.pku.edu.cn/compcourse
COM实现 潘爱民 http://www. http://www.icst.pku.edu.cn/compcourse compcourse

内 复习:COM接口与COM对象 注册表 类厂 COM库 冷总结和例子
内容 !复习:COM接口与COM对象 !注册表 !类厂 !COM库 !总结和例子

组作接口 第一个里程 用tabe作为接口 解决了名字冲突和二进制结构兼容问题 第二个里程碑 接口转换: Dynamic_cast 第三个里程碑 管理对象生命周期:引用计数
组件接口 !第一个里程碑 – 用vtable作为接口 – 解决了名字冲突和二进制结构兼容问题 解决了名字冲突和二进制结构兼容问题 !第二个里程碑 – 接口转换:Dynamic_cast Dynamic_cast !第三个里程碑 – 管理对象生命周期:引用计数 管理对象生命周期:引用计数

cOM接口 接国标识:ID class iunknown public: virtual HRESULT stdcall QueryInterface( const IID& id, void **ppv)=0 virtual ULONG stdcall AddRef(=0 virtual ULONG stdcall Released=0
COM接口 ! 接口标识:IID ! IUnknown IUnknown接口: class IUnknown IUnknown { public: public: virtual HRESULT__ virtual HRESULT__stdcall QueryInterface stdcall QueryInterface( const IID& const IID& iid, void ** , void **ppv) = 0 ; ) = 0 ; virtual ULONG virtual ULONG __stdcall AddRef stdcall AddRef() = 0; () = 0; virtual ULONG virtual ULONG __stdcall stdcall Release() = 0; Release() = 0; };

cOM接口结构 pOtable vtable 接口指针 指针 指针函数1 指针函数2 对象实现 指针函数3
COM接口结构 接口指针 指针 指针函数 1 指针函数 2 指针函数 3 。。。。。。 对象实现 pVtable vtable

c0M接囗引用计数 用计数的含义 Outstanding reference 对象实现引用计数 Addref、 Release 客卢显式地操纵引用计数 客户有责任维护好引用计数 今引用计数规则
COM接口引用计数 !引用计数的含义 引用计数的含义 – Outstanding reference Outstanding reference !对象实现引用计数 对象实现引用计数 – AddRef、Release Release !客户显式地操纵引用计数 客户显式地操纵引用计数 – 客户有责任维护好引用计数 客户有责任维护好引用计数 !引用计数规则

cO》接口 QueryInterface HRESULT stdcall QueryInterface( const IID& id, void*ppv 个COM对象可以实现多个接口 QueryInterface是技术保证 Queryinterface实现 多继承情况:使用 static cast向上转换 三对象身份: IUnknown必须唯 客户通过 QueryInterface使用对象的接口 注意: QueryInterface内含 AddRef
COM接口QueryInterface QueryInterface HRESULT __ HRESULT __stdcall QueryInterface stdcall QueryInterface( const IID& const IID& iid, void ** , void **ppv) !一个COM对象可以实现多个接口 对象可以实现多个接口 – QueryInterface QueryInterface是技术保证 !QueryInterface QueryInterface实现 – 多继承情况:使用 多继承情况:使用static_cast static_cast向上转换 – 对象身份:IUnknown IUnknown必须唯一 !客户通过QueryInterface QueryInterface使用对象的接口 使用对象的接口 – 注意:QueryInterface QueryInterface内含AddRef

TDL 少类C的语言,但不是编程语言 跨语言的中间语言 编译器: MIDL exe产生C++头文件定义 产生C++头文件定义,相当于C+定义 MIDL,eXe产生TB类型库 许多编程语言利用COM对∏LB的支持 氵所有的标准接口都可以在SDK中找到IDL描述 支持 Import/importlib语法
IDL !类C的语言,但不是编程语言 的语言,但不是编程语言 – 跨语言的中间语言 跨语言的中间语言 !编译器:MIDL.exe MIDL.exe产生C++头文件定义 – 产生C++头文件定义,相当于 头文件定义,相当于C++定义 !MIDL.exe MIDL.exe产生TLB类型库 – 许多编程语言利用 许多编程语言利用COM对TLB的支持 !所有的标准接口都可以在 所有的标准接口都可以在SDK中找到IDL描述 – 支持import/ import/importlib importlib语法

编译IDL xxhC+头文件 用于客户/服务器 XXX LC GUID proxy/stub xIDL文件 MIDL. exe XXX_pC P/S dlldata. c xxx. tlb 用于其他编程语 言,如Java、VB
编译IDL xxx.IDL文件 MIDL.exe xxx.h C++头文件 xxx_i.c GUID xxx_p.c P/S dlldata.c xxx.tlb 用于客户/服务器 proxy/stub 用于其他编程语 言,如Java、VB

cO对象 对象标识: CLSID 封装:属性和方法,或者状态和操作 对象与接口的联系 同C++对象与成员函数之间的联系 ☆COM对象的身份 对象同一性判断准则
COM对象 !对象标识:CLSID !封装:属性和方法,或者状态和操作 封装:属性和方法,或者状态和操作 !对象与接口的联系 对象与接口的联系 – 如同C++对象与成员函数之间的联系 对象与成员函数之间的联系 !COM对象的身份 – 对象同一性判断准则 对象同一性判断准则
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 北京大学:《组件技术》课程教学资源(讲义课件)第三讲 COM接口与对象.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第二讲 C++语言基础.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第一讲 软件领城的发展(潘爱民).pdf
- Linux爱好者入门教程.doc
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第12章 图形输出.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第10章 尺寸标注.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第1章 启动与退出.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第2章 绘图基础.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第5章 绘制图形.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第8章 图案填充.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第7章 图块及属性.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第11章 创建三维对象.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第9章 文字标注.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第4章 图层、线型、颜色.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第6章 图形编辑.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第3章 绘图设置.ppt
- 华南热带农业大学:《计算机导论》第13章 信息安全.ppt
- 华南热带农业大学:《计算机导论》第12章 电子商务.ppt
- 华南热带农业大学:《计算机导论》第10章 Internet应用基础.ppt
- 华南热带农业大学:《计算机导论》第9章 计算机网络基础.ppt
- 北京大学:《组件技术》课程教学资源(讲义课件)第五讲 COM特性.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第六讲 COM多线程模型、DCOM.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第七讲 自动化 Automation.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第八讲 COM开发.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第九讲 COM:可连接对象&结构化存储.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第十讲 COM:moniker、UT、control.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第十一讲 COM+.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第十二讲 软件设计模式(一).pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第十三讲 软件设计模式(二).pdf
- 《数字平面艺术设计》课程教学资源(教材PPT课件,图片版)第2章 平面设计概述.ppt
- 《ASP程序设计》课程配套PPT教学课件(共十一章).ppt
- 湖北工业大学:《数据结构》第10章(10-1)查找的基本概念.ppt
- 湖北工业大学:《数据结构》第9章(9-2)哈希查找表.ppt
- 湖北工业大学:《数据结构》前言、第1章 绪论.ppt
- 湖北工业大学:《数据结构》第2章 线性表(1/4).ppt
- 湖北工业大学:《数据结构》第2章 线性表(2/4).ppt
- 湖北工业大学:《数据结构》第2章 线性表(3/4).ppt
- 湖北工业大学:《数据结构》第2章 线性表(4/4).ppt
- 湖北工业大学:《数据结构》第3章 堆栈和队列(1/3).ppt
- 湖北工业大学:《数据结构》第3章 堆栈和队列(2/3).ppt