【发布时间】:2014-08-14 18:09:00
【问题描述】:
我在 IConnectionPoint 和 IConnectionPointContainer 的帮助下创建了客户端和 COM 对象之间的连接。
data->pApp->lpVtbl->QueryInterface(data->pApp, &IID_IUnknown, (void**)&data->pUnknown));
data->pUnknown->lpVtbl->QueryInterface(data->pUnknown, &IID_IConnectionPointContainer, (void**)&data->pConnectionPointContainer));
data->pConnectionPointContainer->lpVtbl->FindConnectionPoint(data->pConnectionPointContainer, &DIID__IApplicationEvents, &data->pConnectionPoint));
data->pConnectionPoint->lpVtbl->Advise(data->pConnectionPoint, (IUnknown*)sink, &sink->dwCookie));
我已经实现了 QueryInterface、AddRef 和 Release。 如果 COM 对象将执行 QueryInterface 我 printf riid。
IID: 0x3 - 0x0 - 0x0 - 0x764D3E14
This-Objekt: 0030EC4C, ppvObject: 0030E2D4
IID: 0x3 - 0x0 - 0x0 - 0x764D3E14
This-Objekt: 0030EC4C, ppvObject: 0030E294
...
如何找出属于 IID 的接口?
编辑:
我很想将 IID 与我使用建议的 IsEqualGUID 知道的东西进行比较
但我不知道我的目标应用程序调用了哪些接口。
if(IsEqualGUID(iid, &IID_IThisIsWhatIAmLookingFor))
我试图找出我得到的数字属于哪个接口,所以我试图根据我得到的数字找到接口IID_IThisIsWhatIAmLookingFor。实施这是我的下一步。
【问题讨论】:
-
查阅目标应用程序的文档。无论如何,您都需要该文档来了解如何实现该接口。