IUnknown接口

原创 2001年07月06日 20:43:00
       COM定义的每一个接口都必须从IUnknown继承过来,其原因在
于IUnknown接口提供了两个非常重要的特性:生存期控制和接口查询。
客户程序只能通过接口与COM对象进行通信,虽然客户程序可以不管
对象内部的实现细节,但它要控制对象的存在与否。如果客户还要继
续对对象进行操作,则它必须保证对象能一直存在于内存中;如果客户
对对象的操作已经完成,以后也不在需要该对象了,则它必须及时的把
对象释放掉,以提高资源的利用率。IUnknown引入了"引用记数"方法
可以有效的控制对象的生存周期。
     另一方面,如果一个COM对象实现了多个接口,在初始时刻,客户
程序不太可能得到该对象的接口指针,它只会拥有一个接口指针。如果
客户程序需要其他的指针,那么它如何通过接口指针呢?IUknown使用了
"接口查询"的方法完成接口之间的跳转。
     首先我们来看一下IUnknown的定义(IDL)
     interface IUnknown
     {
        HRESULT QueryInterface([in] REFIID iid,[out] void **ppv);
        ULONG ADDRef(void);
        ULONG Release(void);
     }
     IUnknown包含了三种成员函数:QueryInterface、AddRef和Release.
函数QueryInterface用于查询COM对象的其他接口指针,函数AddRef和Release
用于对引用记数进行操作。

COM 组件接口的 IUnKnown 接口介绍

COM 组件接口的 IUnKnown 接口介绍
  • Dopamy_BusyMonkey
  • Dopamy_BusyMonkey
  • 2015年08月07日 09:18
  • 1048

零基础学习COM之IUnknown抽象接口介绍

零基础学习COM之IUnknown抽象接口介绍        传统的软件由单个的二进制文件组成。组件将单个二进制文件分割为多个独立的部分,每个部分都被称为一个组件。采用组件技术后,在需要对程序进行...
  • ithzhang
  • ithzhang
  • 2012年11月24日 08:36
  • 7820

ATL中IUnknown接口的实现(一)

ATL和MFC都能作为开发COM的工具,而ATL是一个Template Library,MFC却是一个Framework,作为Template Library,其优势在于其只是提供给程序员形式各异,可...
  • Andeewu
  • Andeewu
  • 2013年04月10日 10:05
  • 867

IUnknown接口

        COM组件其实是一种特殊的类,遵循一个统一的标准,使到各个软件都可以通过某种方法访问这个类的函数和方法,也就可以做到组件通用. com就是统一的标准--通过接口来调用com组件.接口是...
  • medvision
  • medvision
  • 2007年04月17日 10:38
  • 5039

【原创】使用vc向导简历的ATL COM简单对象好像没有IUnknown接口的实现?

  这两天看了看COM和ATL,还是有点云里雾里的感觉。对ATL如何实现COM的一个可创建对象还是不太明白,只知道一些概念。知识仅局限于能够使用VC 的向导简历一个ATL工程,增加一个ATL简单对象,...
  • ppslide
  • ppslide
  • 2011年06月17日 13:27
  • 616

通过ATL开发COM_2实现IUnknown接口

每个COM组件需要实现这三个功能1. 实现IUnknown接口 (通过 CComObjectRootEx 实现)2. 实现一个类工厂,支持组件的创建 (通过 CComCoClass 实现)3. 实现自...
  • hongjiqin
  • hongjiqin
  • 2009年08月18日 18:28
  • 2156

com的主要接口介绍

COM规范规定任何组件、任何接口都必须从IUnknown继承,IUnknown包含三个函数,分别是 QueryInterface、AddRef、Release。这三个函数是无比重要的,而且它们的排列顺...
  • lp310018931
  • lp310018931
  • 2015年09月19日 18:11
  • 1586

IUnKNown接口——QueryInterface函数

COM笔记-QueryInterface函数 fangyukuan 2010.6.1 客户同组件的交互都是通过一个接口完成的。在客户查询组件的其他接口时,也是通过接口完成的。这个接口...
  • THEONE10211024
  • THEONE10211024
  • 2013年10月30日 12:11
  • 4533

IUnKnown接口

(1). IUnKnown接口的定义:   IUnKnown是一个接口。 所有COM接口都继承IUnKnown。IUnKnown的定义在WIN32 SDK中的UNKNWN头文件中。   /...
  • fan0826
  • fan0826
  • 2012年11月01日 16:11
  • 103

CComObjectBase 和IUnknown 接口

CComObjectBase 和IUnknown 接口     `vftable'{for`Windows::COM::CComObjectBase'} 比 `vftable'{for`IU...
  • hadstj
  • hadstj
  • 2016年12月17日 21:56
  • 215
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IUnknown接口
举报原因:
原因补充:

(最多只允许输入30个字)