Я хотел бы иметь возможность сделать эквивалент FormatMessage - генерировать текстовое сообщение для отладки и даже сборок во время выполнения, которые могут сообщать о некоторых общих HRESULT, или даже выплевывать такие вещи, как серьезность, какое средство было и, возможно, описание кода ошибки.
Я нашел эту простую функцию , но она слишком проста и в большинстве случаев, кажется, генерирует "неизвестную ошибку". Но пока я не нашел ничего более перспективного.
Я могу сделать что-то вроде следующего:
CComPtr<IErrorInfo> iei;
if (S_OK == GetErrorInfo(0, &iei) && iei)
{
// get the error description from the IErrorInfo
BSTR bstr = NULL;
if (SUCCEEDED(iei->GetDescription(&bstr)))
{
// append the description to our label
Append(bstr);
// done with BSTR, do manual cleanup
SysFreeString(bstr);
}
}
else if (HRESULT_FACILITY(hr) == FACILITY_WIN32)
{
// append the description to our label
Append(CErrorMessage(HRESULT_CODE(hr)).c_str());
}
Однако мне интересно, добиваюсь ли я чего-то большего, чем _com_error.
Кто-нибудь знает разумно реализованную возможность генерирования вывода журнала ошибок для HRESULT?