什么是QueryInterface和IUnknown接口?

时间:2014-04-07 10:12:00

标签: c#-4.0 com

我想知道QueryInterface和IUnknown接口的实际用法。

2 个答案:

答案 0 :(得分:1)

QueryInterface 检查实现此接口的对象是否支持IID指定的接口。如果是这样,QueryInterface

  1. 增加引用计数。
  2. 设置Obj参数以便它 指向指定接口的实例。
  3. 返回0表示成功。
  4. 如果对象不支持该接口,则QueryInterface返回非零错误代码,例如E_NoInterface。

    IUnknown 是COM-Lite中的基本接口,与COM一样。所有其他COM-Lite接口必须从它派生。

    用于对象生存期管理(何时释放对象)和对象自描述(如何在运行时确定对象功能)

答案 1 :(得分:0)

QueryInterface()是C#as关键字的COM版本 - 您调用QueryInterface()并提供接口ID,您可以获得成功代码(S_OK)和有效指针到该对象的接口或错误代码E_NOINTERFACE和空指针,这意味着该对象不实现这样的接口。 IUnknown是包含QueryInterface()的接口,以及用于COM对象生存期管理的引用计数方法(AddRef()Release())。每个COM对象必须至少实现IUnknown,否则当您不再需要它们时,您根本无法Release()个对象,并且调用Release()是告诉您不再需要该对象的唯一方法