Поделиться через


Код последней ошибки

При возникновении ошибки большинство системных функций возвращают код ошибки, обычно 0, NULL или –1. Многие системные функции также задают дополнительный код ошибки, называемый последним кодом ошибки. Этот код ошибки поддерживается отдельно для каждого запущенного потока; Ошибка в одном потоке не перезаписывает код последней ошибки в другом потоке. Любая функция может вызывать функцию SetLastError или SetLastErrorEx, чтобы задать код последней ошибки для текущего потока. Эти функции предназначены в первую очередь для библиотек динамической компоновки (DLL), поэтому они могут предоставлять сведения вызывающему приложению. Обратите внимание, что некоторые функции вызывают SetLastError или SetLastErrorEx с 0 при успешном выполнении, удаляя код ошибки, заданный последней ошибкой функции, а другие — нет.

Приложение может получить код последней ошибки с помощью функции GetLastError . Код ошибки может рассказать больше о том, что на самом деле произошло для сбоя функции. Документация по системным функциям будет указывать условия, при которых функция задает код последней ошибки.

Система определяет набор кодов ошибок, которые можно задать как коды последней ошибки или возвращать этими функциями. Коды ошибок — это 32-разрядные значения (бит 31 — самый значительный бит). Бит 29 зарезервирован для кодов ошибок, определенных приложением; в этом битовом наборе отсутствует системный код ошибки. Если вы определяете коды ошибок для приложения, задайте этот бит, чтобы указать, что код ошибки определен приложением, и убедитесь, что коды ошибок не конфликтуют с системными кодами ошибок. Дополнительные сведения см. в разделе WinError.h и системных кодов ошибок.