2009-08-01 23 views
0

..アウトオブプロセスサーバーの場合、またはプロキシ/スタブを登録せずにディスパッチインターフェイスを呼び出すことはできますか?"純粋な" IDispatchインターフェイスにはプロキシ/スタブDLLが必要ですか?

問題のインターフェイスが非常に高いレベルであるので、パフォーマンスが非問題であり、私は全部登録のない、あなたがいる場合にのみ、プロキシ/スタブDLLを必要とする大きなプラス

+0

標準マーシャラを使用して、自動的にプロキシ/スタブラッパーを作成してあなたのためにしたいとします。あなたはどのようにこのコクラスのIDispatchをコクラスのレジストリエントリなしでラップするかを特定していますか? – wqw

+0

いいえ、私はそれを使うことができますか? – peterchen

答えて

1

インターフェイスをオートメーション互換のタイプに制限する場合は、カスタムプロキシ/スタブDLLを用意する必要はありません。その場合、システムはオートメーションマーシャラーを使用することができ、追加のヘルプは必要ありません。オートメーションコンパチブルタイプはVARIANTに収まるタイプであると私は信じています。シンプルなPODタイプ、BSTRなどが挙げられる。

私はthis KB articleを見つけましたが、オートメーションマーシャラについての議論がありますが、あなたの質問には特に目を向けませんでした。それは少なくとも互換性のある型をリストします。また、コンポーネントの登録時にオートメーションマーシャラーを具体的に特定する必要があることについても言及していますが、これは必要ではありません。マイレージは異なる場合があります。

最後に、IProvideClassInfoも実装する必要があります。私は通常、ATLが提供する実装を使用します。

0

で作ることができますあなたのインターフェイスをマーシャリングする必要があります。つまり、COMサーバーが処理中で、インターフェイスがアパートメント間を通過せず、.NETやそれをマーシャリングする必要があるその他の状況から呼び出すことができない場合は、プロキシ/スタブDLL。

関連する問題