【发布时间】:2012-06-22 09:33:09
【问题描述】:
我有一个作为 .exe 运行的 com 服务器。这个 COM 服务器有两个 COM 实现。 COM1 中有接口说“interface1”,COM2 有“interface2”。在“interface1”的一种方法中,比如 XYZ(IDispatch **pIDispatch),我使用“CoGetClassObject()”和“CLSCTX_LOCAL_SERVER”实例化了 COM2,并创建了“interface2”并通过该方法传递了它的“IDispatch”指针。
同一台机器上的客户端使用 COM Proxy DLL 与 COM Server 通信。客户端调用“interface1”方法XYZ(),函数执行成功,但返回给客户端的IDispatch为NULL。
机器是32位的。
谁能告诉我为什么会这样,或者我想要得到的东西是不可能的。
【问题讨论】:
-
大概你正在使用进程外来桥接 32/64 位鸿沟?
-
是的 32 位客户端正在使用代理 DLL 与 64 位 COM 服务器通信
-
看起来您忽略了调用的 HRESULT 返回值。不要,你不会知道它为什么会失败。
-
感谢您指出 HRESULT 返回值。 HRESULT 返回 S_OK 所以从 HRESULT 我们没有得到任何关于失败的信息。