IDISPATCHエラーおよび/またはメッセージテキストのリスト
質問
私は、hresultsを返すWMI/WBEMインターフェイスの方法を呼び出しています。これらのエラーコードの意味のあるエラーメッセージをユーザーに表示したいと思います。ただし、HRESULTのエラーメッセージを調べると、「IdisPatchエラー#3598」のような文字列のみが表示されます。
それらの意味を説明するこれらのIdisPatchエラーコードのリストを見つけることができましたか?
エラーが発生する可能性のあるコードの例:
IWbemLocator *pLocator = NULL;
IWbemServices *pNamespace = NULL;
hr = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *) &pLocator);
if (FAILED(hr))
return hr;
hr = pLocator->ConnectServer(wPath, NULL, NULL, NULL, 0, NULL, NULL, &pNamespace);
if(FAILED(hr))
return hr;
エラー検索:
CString sMessage = _com_error(nError).ErrorMessage();
// sMessage now contains a string like "IDispatch error #3598"
ノート: これ 助けにはなりません - それは私が得るhresultsを含んでいません。 winerror.hにも含まれていません。
解決
comサーバーは、独自のhresultエラーコードを生成できます。 ierrorinfoインターフェイスは、クライアントがエラーの説明を取得するのに役立ちます。 _com_errorクラスにその仕事をする機会を与えているのではなく、コンストラクターへのierrorinfoインターフェイスポインターを渡すことはありません。
最初のQi isupporterRorinfoのインターフェイスとそのインターフェースサプロッポートセロリンフォー()メソッドを呼び出して、エラーレポートがサポートされていることを確認します。次の呼び出しgeterrorinfo()を呼び出して、ierrorinfoインターフェイスポインターを取得します。 MSDNドキュメント あります.
所属していません StackOverflow