gpt4 book ai didi

c - 如何获取接口(interface)属于 ANSI C 中的 IID、IConnectionPoint、IConnectionPointContainer

转载 作者:太空宇宙 更新时间:2023-11-04 00:05:54 25 4
gpt4 key购买 nike

在 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,我将打印 riid。

IID: 0x3 - 0x0 - 0x0 - 0x764D3E14
This-Objekt: 0030EC4C, ppvObject: 0030E2D4

IID: 0x3 - 0x0 - 0x0 - 0x764D3E14
This-Objekt: 0030EC4C, ppvObject: 0030E294

...

如何找出哪些接口(interface)属于 IID?


编辑:

我很乐意使用建议的 IsEqualGUID 将 IID 与我知道的东西进行比较但我不知道我的目标应用程序调用了哪些接口(interface)。

if(IsEqualGUID(iid, &IID_IThisIsWhatIAmLookingFor))

我试图找出我得到的数字属于哪个接口(interface),所以我尝试根据我得到的数字找到接口(interface) IID_IThisIsWhatIAmLookingFor。实现这是我的下一步。

最佳答案

How can I find out which Interfaces belong to the IID's?

你不能从你持有的接口(interface)指针中分辨出IID。在代码中,您通常管理特定于特定接口(interface)的变量中的指针,并使用相应的 IID 获取那里的值。

然而,您可以使用感兴趣的 IID 调用另一个 QueryInterface。请注意,您不能假设每次都获得相同的指针,除非 IIDIID_IUnknown

关于c - 如何获取接口(interface)属于 ANSI C 中的 IID、IConnectionPoint、IConnectionPointContainer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24387320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com