2

comサーバーを.exeとして実行しています。このCOMサーバーには2つのCOM実装があります。COM1には「interface1」というインターフェースがあり、COM2には「interface2」があります。「interface1」のメソッドの1つ、たとえばXYZ(IDispatch ** pIDispatch)で、「CoGetClassObject()」と「CLSCTX_LOCAL_SERVER」を使用してCOM2をインスタンス化し、「interface2」を作成して、その「IDispatch」ポインターをそのメソッドに渡しました。

同じマシン上のクライアントは、COMプロキシDLLを使用してCOMサーバーと通信します。クライアントが「interface1」メソッドXYZ()を呼び出し、関数は正常に実行されますが、返されるIDispatchはクライアントに対してNULLです。

マシンは32ビットです。

なぜそうなのか、私が得ようとしていることは不可能なのか、誰かに教えてもらえますか?

4

1 に答える 1

0

問題は解決されました。引数IDispatchのidlファイルでキーワード[out、retval]を使用していませんでした。これをインターフェースmetthodに入れた後。IDispatch値は、COMサーバーによってクライアントに正常に再調整されました。

于 2012-06-27T09:19:22.703 に答える