`
klskdk
  • 浏览: 9732 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

COM(组件对象模型)

阅读更多

  COM :创建和使用组件 的标准
  (DLL:COM的一种实现)
  任何程序都由若干组件构成
  组件 :功能 模块 ,实现接口
  组件特点:(1)动态链接 (2)隐藏 (内部)实现 (实现语言,实现逻辑)
  COM最终目的:动态替换组件
  COM库(COM Library):支持组件管理
  外部程序/组件 只通过接口访问组件
  外部程序/组件只能通过查询接口(QueryInterface)了解组件支持的接口
  查询接口(QueryInterface)规则:
  (1)(同一组件)总是返回同一IUnknow 指针
  (2)外部可获得曾获得 的接口
  (3)外部可再次获得已获得接口
  (4)外部可返回起始接口
  (5)可从任意接口获得已获得接口
  -------------------------------------------------- --------------------------------------
  COM的实现:C++
  win32使用(只含纯虚 函数的)结构体 (struct)表示接口(interface)
  #define interface struct
  (通过)接口指针 调用接口函数 :多态调用 实现函数(实现对象+虚表 / 静态实现函数)
  多态:按同一种方式处理不同的对象
  接口定义了一种内存结构,实现类继承这个结构
  接口定义了 实现类的虚表结构
  接口继承接口,类实现接口
  所有接口继承IUnknow接口(查询接口+控制生命周期)
  interface IUnknow {
  virtual HRESULT __stdcall QueryInterface(const IID& iid, void** ppInterface) = 0;//查询组件接口
  virtual ULONG __stdcall AddRef() = 0;
  virtual ULONG __stdcall Release() = 0;
  }
  一个组件只有一个IUnknow接口
  //(1)创建组件实例 (CreateInstance) :返回IUnknow指针
  (2)通过IUnknow指针查询 组件中接口 (QueryInterface) :根据接口ID(IID)返回接口指针
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics