QueryInterface的实现规则的理解:
1、组件的实例只有一个IUnknown接口。
不管通过实例的哪个接口去查询IUnknown接口时 ,所得到的均将是同一个指针值
1、组件的实例只有一个IUnknown接口。
不管通过实例的哪个接口去查询IUnknown接口时
。这样做的目的之一就是保证组件实例所有接口有同一个入口 。并且有一个好处
是可以通过查询IUnknown接口来判断两个接口是否指向同一个 组件。
2、客户可以获取曾经得到过的接口
我的理解是,这条规则规定了一个组件的接口集一旦确定就要保持
更改的。
3、可以再次获取已经拥有的接口
很多情况下,函数都需要一个IUnknown指针作为参数 。此条规则保证了传递个函
3、可以再次获取已经拥有的接口
很多情况下,函数都需要一个IUnknown指针作为参数
数的指针接口能够获取到特定的接口指针,即便此参数已经是这个特定 的接口指
针。
4、应该具有自反性
举个例子: IX成功的查询了一个IY接口。此时可以使用IY接口来成功查询到
口。
5、如果通过某个接口成功获取某特定接口,那么通过该组件的其他任 意接口都应
5、如果通过某个接口成功获取某特定接口,那么通过该组件的其他任
能够查询到该特定接口。