QueryInterface 的实现规则

转载 2007年09月23日 15:22:00

本节将给出一些QueryInterface既的所有实现都必须遵循的一些规则,以便客户能够获取关于组件的足够多的知识并对之施实一些控制和其他有用的处理。如果没有这些规则,是不可能编写出组件的,因为在这种情况下,QueryInterface的行为将是不确定的。具体来讲,这些规则是:
QueryInterface返回的总是同一 IUnknown指针。
若客户曾经获取过某个接口,那么它将总能获取此接口。
客户可以再次获取已经拥有的接口。
客户可以返回到起始接口。
若能够从某个接口获取某特定接口,那么可以从任意接口都将可以获取此接口。

//组件的实现只有一个IUnknown接口
BOOL SameComponents(IX *pIX,IY *pIY)
{
    IUnknown 
*pI1=NULL;
    IUnknown 
*pI2=NULL;
    
//从PIX得到IUnknown接口
    pIX->QueryInterface(IID_IUnknown,(void **&pI1);

    
//从pIY得到IUnknown接口
    pIY->QueryInterface(IID_IUnknown,(void **&pI2);

    
//这两个指针相等吗?
    return pI1==pI2;

};

//可以再次获取已经拥有的接口

void GetInterAgain(IX *pIX)
{
    IX 
*pIX2=NULL;
    
//从IX查询IX接口
    HRESULT hr=pIX->QueryInterface(IID_IX,(void **&pIX2);
    assert(SUCCEEDED(hr));
};
 

COM编程中的接口查询QueryInterface的实现原理

我们都知道,COM组件编程中,QueryInterface实现的接口之间的查询,通过这个接口,我们可以获取该组件中其他的接口。但是,QueryInterface实现的原理是什么呢,首先,我们看一下基本...
  • Andeewu
  • Andeewu
  • 2013年03月31日 17:12
  • 1367

COM技术-第三章 QueryInterface函数.ppt

  • 2012年08月01日 15:12
  • 2.86MB
  • 下载

QueryInterface()

QueryInterface() QueryInterface()简称QI(),由客户端程序调用这个函数从COM对象请求不同的接口。我们在例子代码中因为只实现一个接口,QI()会很容易使用。QI()...

QueryInterface详解 COM

QueryInterface 接口查询 IUnknown:        所有的COM接口均需要继承IUnknown接口。因此,若某个用户拥有一个IUnknown接口指针,它并不需要知道它所拥有的...

第一讲:COM接口与QueryInterface

来自:http://www.vckbase.com/index.php/video/listview/fid/2/sid/12 本节内容: 1、现实中的组件与接口 2、把现实中的思想融入到软...

com QueryInterface

客户同组件的交互都是通过一个接口完成的。在客户查询组件的其他接口时,也是通过接口完成的。这个接口就是IUnknown。它在UNKNWN.H头文件定义 :如下...

【COM学习】之一、QueryInterface

开始先说一句,学习com之前要学好c++ 对象模型。 QueryInterface的使用: QueryInterface是IUnknown的一个成员函数,客户可以通过此函数来查询某个组件是...

C++程序员之路深入探讨QueryInterface

QueryInterface的本质初探 本文写给COM的初学者! QueryInterface接口对COM的重要性不言而喻,该接口的实现有个规则——由QueryInterface返回的IU...

COM笔记-QueryInterface函数

客户同组件的交互都是通过一个接口完成的。在客户查询组件的其他接口时,也是通过接口完成的。这个接口就是IUnknown。它在UNKNWN.H头文件定义 :如下        Interface I...

COM学习笔记(一):入门及QueryInterface

#include 定义了-> #define interface struct #include 定义了-> #define pascal __stdcall //**************...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: QueryInterface 的实现规则
举报原因:
原因补充:

(最多只允许输入30个字)