- PVSM.RU - https://www.pvsm.ru -
.jpg)
Здраствуйте!
Представляю обзор функций для получения текста ошибок из их кодов, который представлен в программе Error Lookup [1].
Эта функция не такая уж и простая как может показаться (большая часть функционала в вышеупомянутой программе реализована через неё, т.к. эту функцию можно настроить на получение НЕ только системных кодов ошибок, см. пункт 2). По умолчанию функция выдаёт код системной ошибки.
Пример:
Функция получает текст ошибки из кода системных ошибок [3]
// пример получения текста системной ошибки
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, 1337, 0, lpszBuffer, cchBuffer, NULL);
printf("Error Code: %dnError Name: %s", 1337, lpszBuffer);
Результат:
Error Code: 1337
Error Text: Идентификатор безопасности имеет неверную структуру.
При установленном флаге FORMAT_MESSAGE_FROM_HMODULE можно загрузить список ошибок из модуля (DLL) в котором находится список ошибок:
Пример:
В этом примере база ошибок загружается из файла ntdll.dll
// загружаем ntdll.dll для получения текста NTSTATUS ошибки
FormatMessage(FORMAT_MESSAGE_FROM_HMODULE, LoadLibrary("ntdll.dll"), -1072037872, 0, lpszBuffer, cchBuffer, NULL);
printf("Error Code: %dnError Name: %s", -1072037872, lpszBuffer);
Результат:
Error Code: -1072037872
Error Text: Служба журнала обнаружила попытку ошибочного выделения или освобождения зарезервированного пространства.
Пример:
Пример получения ошибки DirectX:
// получение текста DirectX ошибки
printf("Error Code: %dnError Name: %snError Text: %s", 1337, DXGetErrorString((HRESULT)1337), DXGetErrorDescription((HRESULT)1337));
Результат:
Error Code: 1337
Error Name: ERROR_INVALID_SID
Error Text: The security ID structure is invalid.
Эта функция для получает текст ошибки из библиотеки функций RAS
Пример:
Функция получает текст ошибки из кода RAS ошибок [10]
// пример получения текста RAS ошибки
RasGetErrorString(633, lpszBuffer, cchBuffer);
printf("Error Code %dnError Text: %s", 633, lpszBuffer);
Результат:
Error Code: 633
Error Text: Модем или другое устройство связи уже используется или не настроено.
Эта функция для получения текста ошибки из библиотеки функций IP Helper Library
Пример:
Функция получает текст ошибки
// получаем текст ошибки IP Helper Library
GetIpErrorString(12, lpszBuffer, cchBuffer);
printf("Error Code %dnError Text: %s", 12, lpszBuffer);
Результат:
Error Code: 12
Error Text: General failure.
Автор: hatred
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/windows/12689
Ссылки в тексте:
[1] Error Lookup: http://www.henrypp.org/?product=errorlookup
[2] FormatMessage: http://msdn.microsoft.com/en-us/library/windows/desktop/ms679351%28v=vs.85%29.aspx
[3] кода системных ошибок: http://msdn.microsoft.com/en-us/library/windows/desktop/ms681381%28v=vs.85%29.aspx
[4] NTSTATUS: http://msdn.microsoft.com/en-us/library/cc704588%28v=prot.10%29.aspx
[5] Wininet: http://msdn.microsoft.com/en-us/library/windows/desktop/aa385465%28v=vs.85%29.aspx
[6] Performance Data Helper: http://msdn.microsoft.com/en-us/library/windows/desktop/aa373046%28v=vs.85%29.aspx
[7] DXGetErrorString: http://msdn.microsoft.com/ja-jp/library/bb173057%28v=vs.85%29.aspx
[8] DXGetErrorDescription: http://msdn.microsoft.com/ja-jp/library/bb173056%28v=vs.85%29.aspx
[9] RasGetErrorString: http://msdn.microsoft.com/en-us/library/windows/desktop/aa377539%28v=vs.85%29.aspx
[10] кода RAS ошибок: http://msdn.microsoft.com/en-us/library/windows/desktop/bb530704%28v=vs.85%29.aspx
[11] GetIpErrorString: http://msdn.microsoft.com/en-us/library/windows/desktop/aa365951%28v=vs.85%29.aspx
[12] Структура Message Table (см. пункт 2): http://msdn.microsoft.com/en-us/library/windows/desktop/ms680357%28v=vs.85%29.aspx
[13] Пример разбора Message Table: http://www.codeproject.com/Articles/14444/Enumerating-Message-Table-Contents
[14] Setup: http://www.henrypp.org/file/errorlookup_1.6_setup.exe
[15] Portable: http://www.henrypp.org/file/errorlookup_1.6_portable.7z
[16] Source (C++): http://www.henrypp.org/file/errorlookup_1.6_src.7z
Нажмите здесь для печати.