博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
com关于IUnknown接口
阅读量:6114 次
发布时间:2019-06-21

本文共 698 字,大约阅读时间需要 2 分钟。

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用于对引用计数进行操作。

转载于:https://www.cnblogs.com/yutingliuyl/p/6788876.html

你可能感兴趣的文章
python进阶学习笔记(三)
查看>>
函数调用vc++笔记----CRecordset类
查看>>
C#反射技术的简单操作(读取和设置类的属性)
查看>>
错排公式
查看>>
ecshop注册送红包ecshop注册就送相应金额
查看>>
零成本建立的.NET小组开发平台
查看>>
Installed .NET Framework 4.5 Ajax POST IIS hang
查看>>
cocos2d-x make: *** [clean-box2d_static-armeabi] Error 1
查看>>
VS2010无法修改资源文件
查看>>
邮箱工具(尚未完成)的几个组件类
查看>>
inkscape - 百度百科
查看>>
使用 Python 进行稳定可靠的文件操作
查看>>
数据结构之后缀数组
查看>>
.Net 中DataSet和DataTable的 区别与联系
查看>>
Windows 管理
查看>>
HDU 1619 Unidirectional TSP(单向TSP + 路径打印)
查看>>
微软BI 之SSIS 系列 - 使用 Multicast Task 将数据同时写入多个目标表,以及写入Audit 与增量处理信息...
查看>>
使用avalon 实现一个订座系统
查看>>
Ubuntu 如何downgrade降级系统
查看>>
MySQL执行外部sql脚本
查看>>