COM 组件接口的 IUnKnown 接口介绍

IUnKnown是一个接口。 所有COM接口都继承IUnKnown。IUnKnown的定义在WIN32 SDK中的UNKNWN头文件中。其定义如下:

interface IUnKnown
{
virtual HRESULT __stdcall QueryInterface(const IID& iid,void **ppv)=0;
virtual ULONG __stdcall AddRef()=0;
virtual ULONG __stdcall Release()=0;
}

IUnKnown接口的作用,COM定义的每一个接口都必须从IUnknown继承过来,其原因在 于IUnknown接口提供了两个非常重要的特性:生存期控制和接口查询。 客户程序只能通过接口与COM对象进行通信,虽然客户程序可以不管 对象内部的实现细节,但它要控制对象的存在与否。IUnknown接口是所有COM接口的根。

函数介绍:

1、客户同组件的交互都是通过一个接口完成的。在客户查询组件的其他接口时,也是通过接口完成的。这个接口就是 IUnknown。所有的 COM 接口都继承了 IUnknown,每个接口的vtbl中的前三个函数都是QueryInterface、AddRef、Release。这样所有COM接口都可以被当成 IUnKnown 接口来处理。

QueryInterface() 方法,System Interface IUnknown下的一个成员函数,客户可以通过此函数来查询某个组件是否支持某个特定的接口。若支持QueryInterface将返回一个指向这些接口的指针,不支持返回值将是一个失败结果。第一个参数是需要查询的接口的ID,第二个参数为按照第一个参数所查询到接口的指针。

2、第二个和第三个函数用于引用的计数和释放,在返回接口指针时调用 AddRef,在使用完接口时调用 Release。

你可能感兴趣的:(C++)