COM笔记(QueryInterface接口查询)

         HRESULT QueryInterface(【in】REFIID iid,【out】void**ppv);

           QueryInterface 函数返回值是一个32位的整数,反映了查询结果:

1. S_OK :查到了指定接口,接口的指针存放在ppv输出参数中;

2.E_NOINTERFACE:对象不支持iid所指定的接口,*ppv为NULL;

3.E_UNEXPECTED:发生了意外错误,*ppv为NULL;

如果一个对象支持多个接口,则客户通过QueryInterface函数可以非常灵活滴在接口指针之间来回跳转,而且不同烦人

的客户跳转顺序也不可能一样,所以必须指定一些规则以避免引起矛盾。COM规范给出了以下一些规则:

1.IUnknown接口唯一性:对于一个对象的不同接口指针,查询带的Iunknown接口必须完全相同。也就是说,每个对象的IUnknown接口指针是唯一的。

因此,对于两个接口的指针,可以通过判断其查询到的IUnknown接口指针是否相等来判断它们是否指向同一个对象

2.接口自反性:对一个接口查询其自身总应该是成功。

3.接口对称性:如果一个接口指针查询到另一个接口指针,则从第二个接口指针再回到第一个接口指针必定成功。

4.接口传递性:如果从第一个指针接口查询到第二个接口指针,从第二个接口指针可以查询到第三个接口指针,那么第三个接口指针一定可以查询到以一个接口指针;

5.接口指针查询时间无关性:如果在某一时刻可以查询到某一接口指针,则以后任何时候在查询同样的接口指针,一定可以查询成功。

 

根据以上的规则从而实现COM组件的灵活使用!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值