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