码迷,mamicode.com
首页 > 其他好文 > 详细

com关于IUnknown接口

时间:2014-07-18 11:20:15      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:com   queryinterface   iunknown   

com定义的每一个接口都必须从IUnknown继承过来,主要原因是IUnknown接口提供了两个非常重要的特性:生存期控制和接口查询。客户程序只能通过接口与com对象进行通信,虽然客户程序可以不管对象内部的实现细节,但它要控制对象的存在与否。如果客户还要继续对对象进行操作,则它必须保证对象能一直存在于内存中;如果客户对对象的操作已经完成,以后也不再需要该对象了,则它必须及时地把对象释放掉,以提高资源的利用率。IUnknown引入了“引用计数”方法,可以有效得控制对象的生存周期。

另一方面,如果一个com对象实现了多个接口,在初始时刻,客户程序不太可能得到该对象所有的接口指针,它只会拥有一个接口指针。如果客户程序需要其他的指针,那么它如何通过这个接口指针获得另一个接口指针呢?IUnknown使用了接口查询(”QueryInterface“)的方法来完成接口之间的条状。

下面是IUnknown的定义:

class IUnknown
{
	public:
		virtual HRESULT _stdcall QueryInterface(const IID& iid,void** ppv) = 0;
		virtual ULONG _stdcall AddRef() = 0;
		vittual ULONG _stdcall Release() = 0;
};
其中,QueryInterface用于查询com对象的其他接口,AddRef和Release用于对引用计数进行操作。

com关于IUnknown接口,布布扣,bubuko.com

com关于IUnknown接口

标签:com   queryinterface   iunknown   

原文地址:http://blog.csdn.net/idiotxl_1020/article/details/37918369

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!