ArcGIS Engine 开发 (三)COM技术中的QueryInterface(接口查询)的实现原理和IUnknown接口

IUnknown

IUnknown 接口是组件对象模型(COM)中的基础接口。COM规格书中规定COM对象至少要实现此一接口,而且其他所有的COM接口都需要派生自IUnknown接口。
IUnknown提供所有COM对象都支持的两种基本特性:

  • 利用引用计数来进行对象生命周期管理;(控制对象生命周期
  • 以及访问许多事先定义的接口。(接口查询

IUnknown接口会包括一个指向虚拟方法表(英语:virtual method table)的指针,虚拟方法表是一个有许多函数指针的列表,函数指针会指向许多实现IUnknown接口所宣告的函数,以和接口中宣告顺序相同的方式排列。而进程内调用产生的开销(英语:Overhead (computing))大致和C++中调用虚拟方法的开销相近。

方法


对象生存期由两个方法控制,AddRefRelease,以及内部引用计数器。每个对象都必须具有IUnknown的实现来控制其生命周期。无论何时创建或复制接口指针,都会调用AddRef方法,当客户端不再需要此指针时,将调用相应的Release方法。当引用计数达到零时,对象会自行销毁。
客户端还使用IUnknown获取对象上的其他接口。QueryInterface是客户端在需要对象上的另一个接口时调

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值