CString ErrorMessageFromErrorCode(DWORD errorCode)
{
void* pMsgBuf = NULL;
::FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
errorCode,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &pMsgBuf,
0,
NULL);
CString result;
if ( pMsgBuf )
{
result = (LPTSTR) pMsgBuf;
LocalFree(pMsgBuf);
}
if ( result.Length() == 0 )
result = _T("Unknown error");
return result;
}
При вызове с параметром 2 эта функция возвращает «Система не может найти указанный файл». При вызове с 0xC1 возвращается «Неизвестная ошибка». Утилита Microsoft Error Lookup показывает это для 0xC1: «% 1 не является допустимым приложением Win32.». Поэтому, когда сообщение об ошибке содержит заполнитель, моя функция не работает.
Есть ли общий способ получить тот же результат, что и Поиск ошибок, не зная ничего о коде ошибки?