3
我正在調用返回HRESULTS的WMI/WBEM接口上的方法。我想爲這些錯誤代碼向用戶顯示有意義的錯誤消息。但是,當我查看HRESULT的錯誤消息時,我只能得到類似「IDispatch error#3598」的字符串。IDispatch錯誤和/或消息文本列表
我能找到這些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"
注:This沒有幫助 - 它不包含我得到的HRESULTS。它們也不包含在winerror.h中。
Hans,這聽起來合乎邏輯 - 然而,我嘗試了以下方法,並且因爲QueryInterface調用而只得到E_NOINTERFACE: hr = pLocator-> ConnectServer(wPath,NULL,NULL,NULL,0,NULL,NULL ,&pNamespace);如果(失敗(hr)) { \t HRESULT result = pLocator-> QueryInterface(IID_IErrorInfo,(void **)&pErrorInfo); \t if(SUCCEEDED(result)&& pErrorInfo!= NULL) \t \t CString sMessage = _com_error(hr,pErrorInfo).ErrorMessage(); – 2011-02-05 21:28:11