Список ошибок IDispatch и / или текстов сообщений - PullRequest
3 голосов
/ 05 февраля 2011

Я вызываю методы на интерфейсах WMI / WBEM, которые возвращают HRESULTS. Я хочу отображать значимые сообщения об ошибках для этих кодов ошибок для пользователя. Однако, когда я просматриваю сообщение об ошибке HRESULT, я получаю только такие строки, как «IDispatch error # 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"

Примечание: Это не помогает - оно не содержит полученных мной ЛЮДЕЙ. Они также не содержатся в winerror.h.

1 Ответ

6 голосов
/ 05 февраля 2011

COM-серверы могут генерировать свои собственные коды ошибок HRESULT. Интерфейс IErrorInfo помогает клиенту получить описание ошибки. Вы не предоставляете классу _com_error возможность выполнить эту работу, вы не передаете указатель интерфейса IErrorInfo в конструктор.

Первый QI интерфейс для ISupportErrorInfo и вызов его метода InterfaceSupportsErrorInfo () для проверки поддержки отчетов об ошибках. Затем вызовите GetErrorInfo (), чтобы получить указатель на интерфейс IErrorInfo. Документы MSDN здесь .

...