2009-02-26 10 views
4

サードパーティのC#ライブラリにCOMインターフェイスを提供する目的で、C#で作成されたDLLがあります。私はそのC#ライブラリと通信できるようにそのCOMインターフェイスを使用するC++プログラムを持っています。場合によっては、C#側で例外がスローされ、C++側に戻ってくるのは、例外が発生したことを意味するCOM呼び出しからのHRESULTです。私がC++アプリケーションのログに有益なメッセージを出力できるように、例外情報全体を取得する方法はありますか?そうでない場合は、C#側ですべての例外を傍受して、HRESULTをC++に返すメカニズムをトリガーする前にC#側でログできるようにするために何かできますか?C#でロードされたC#DLLで例外を処理する方法

答えて

4

HRESULTへの管理例外のマッピングがあります。 this MSDN articleの表を参照してください。 .NETは、IErrorInfoを使用してCOMオブジェクトからエラー情報を取得します。それはあまりにも別の方法でもうまくいくかもしれません。試してみる価値。

+0

あなたが提供したリンクで私の読書は私に希望を与えます。私のために必要なすべてのインターフェイスのクエリを実行するATLクラスを知っていますか、それとも自分で行う必要がありますか? – rmeador

+0

ATLはIErrorInfoを実装しています。非常にシンプルなインターフェースです。 ISupportErrorInfo :: InterfaceSupportsErrorInfo()を最初に実行し、次にIErrorInfo :: GetDescription()を呼び出します。 QIを使用してインターフェイスポインタを取得します。 –

関連する問題