» » » Список функций для получения текста ошибок из их кодов (WinAPI)

 

Список функций для получения текста ошибок из их кодов (WinAPI)

Автор: admin от 6-08-2012, 11:44, посмотрело: 2292

Список функций для получения текста ошибок из их кодов (WinAPI)

Здраствуйте!

Представляю обзор функций для получения текста ошибок из их кодов, который представлен в программе Error Lookup.

1. FormatMessage


Эта функция не такая уж и простая как может показаться (большая часть функционала в вышеупомянутой программе реализована через неё, т.к. эту функцию можно настроить на получение НЕ только системных кодов ошибок, см. пункт 2). По умолчанию функция выдаёт код системной ошибки.

Пример:
Функция получает текст ошибки из кода системных ошибок

// пример получения текста системной ошибки
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, 1337, 0, lpszBuffer, cchBuffer, NULL);

printf("Error Code: %dnError Name: %s", 1337, lpszBuffer);


Результат:
Error Code: 1337
Error Text: Идентификатор безопасности имеет неверную структуру.


2. FormatMessage + FORMAT_MESSAGE_FROM_HMODULE


При установленном флаге FORMAT_MESSAGE_FROM_HMODULE можно загрузить список ошибок из модуля (DLL) в котором находится список ошибок:

  • ntdll.dll — список ошибок NTSTATUS

  • wininet.dll — список ошибок Wininet

  • pdh.dll — список ошибок Performance Data Helper

  • … допишите в комментариях если знаете ещё



Пример:
В этом примере база ошибок загружается из файла 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: Служба журнала обнаружила попытку ошибочного выделения или освобождения зарезервированного пространства.


3. DXGetErrorString & DXGetErrorDescription



  • DXGetErrorString — функция для получения имени ошибки (например ERROR_INVALID_SID)

  • DXGetErrorDescription — функция для получения текста ошибки (например The security ID structure is invalid.)



Пример:
Пример получения ошибки 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.


4. RasGetErrorString


Эта функция для получает текст ошибки из библиотеки функций RAS

Пример:
Функция получает текст ошибки из кода RAS ошибок

// пример получения текста RAS ошибки
RasGetErrorString(633, lpszBuffer, cchBuffer);

printf("Error Code %dnError Text: %s", 633, lpszBuffer);


Результат:
Error Code: 633
Error Text: Модем или другое устройство связи уже используется или не настроено.


5. GetIpErrorString


Эта функция для получения текста ошибки из библиотеки функций 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.


Бонус



Ссылки на скачивание программы





Источник: Windows

Теги: Windows

Категория: Операционные системы » Windows

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении: *