2012-06-20 43 views
2

我有一個com服務器作爲.exe運行。這個COM服務器有兩個COM實現。 COM1的界面中有「interface1」,COM2有「interface2」。在「interface1」的方法之一中說XYZ(IDispatch ** pIDispatch),我用「CLSCTX_LOCAL_SERVER」使用「CoGetClassObject()」實例化COM2,並創建「interface2」並通過該方法傳遞其「IDispatch」指針。IDispatch從COM服務器返回NULL到客戶端(Client和Server都在C++中)

同一臺機器上的客戶端使用COM代理DLL與COM服務器進行通信。客戶端調用「interface1」方法XYZ(),該函數成功執行,但返回的IDispatch對客戶端爲NULL。

機器是32位的。

有人可以告訴我爲什麼是這樣,或者我想要得到的是不可能的。

+0

假設你正在使用out-of-proc橋接32/64位分隔? –

+0

是32位客戶端正在使用代理DLL與64位COM服務器進行通信 – decisive

+0

看起來您忽略了呼叫的HRESULT返回值。不要,你不知道它爲什麼失敗。 –

回答

0

isssue已解決,我沒有在idl文件中爲參數IDispatch使用關鍵字[out,retval]。把這個放在界面方法之後。 COM服務器將IDispatch值成功重新調入客戶端。

相關問題