我想知道QueryInterface和IUnknown接口的实际用法。
答案 0 :(得分:1)
QueryInterface 检查实现此接口的对象是否支持IID指定的接口。如果是这样,QueryInterface
如果对象不支持该接口,则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()
是告诉您不再需要该对象的唯一方法