您的位置:首页 > 产品设计 > UI/UE

COM笔记(QueryInterface接口查询)

2012-10-19 16:25 288 查看
         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组件的灵活使用!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  null
相关文章推荐