質問

私は、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ドキュメント あります.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top