QueryInterface

虽然具有对象可以表示的功能的机制它提供静态(在实例化之前),从而COM结构是使用调用 QIIUnknown 方法。

每个接口从 IUnknown派生,因此,每个接口具有 QueryInterface的实现。无论实现,此方法查询对象的调用方需要指针接口的IID。如果对象支持该接口,QueryInterface 检索指向接口,不过,同一调用 AddRef。否则,它将返回 E_NOINTERFACE 错误代码。

请注意必须始终遵循 引用计数 规则。如果对接口指针的 Release 递减引用计数为零,则不应再使用该指针。有时可能需要获取弱引用对象(即您可能希望获取指向其接口之一,而不会递增引用计数),但是,通过调用 QueryInterface 执行此操作不可接受后跟 Release。以这种方式获取的指针无效,并且不应使用。此很容易会变得很明显,当 _ATL_DEBUG_INTERFACES 定义时,因此,定义此宏是一种有用的方法查找引用计数bug。

请参见

参考

COM 介绍

QueryInterface: Navigating in an Object