Функция SetErrorMode (errhandlingapi.h)
Определяет, будет ли система обрабатывать указанные типы серьезных ошибок или будет ли процесс их обрабатывать.
Синтаксис
UINT SetErrorMode(
[in] UINT uMode
);
Параметры
[in] uMode
Режим ошибок процесса. Этот параметр может иметь одно или несколько из следующих значений.
Значение | Значение |
---|---|
|
Используйте системное значение по умолчанию, которое заключается в отображении всех диалоговых окон ошибок. |
|
Система не отображает окно сообщения critical-error-handler. Вместо этого система отправляет ошибку вызывающей процедуре.
Рекомендуется, чтобы все приложения вызывали функцию SetErrorMode на уровне процесса с параметром SEM_FAILCRITICALERRORS при запуске. Это позволяет предотвратить зависание приложения в диалоговых окнах режима ошибок. |
|
Система автоматически исправляет ошибки выравнивания памяти и делает их невидимыми для приложения. Это делается для вызывающего процесса и всех процессов-потомков. Эта функция поддерживается только определенными архитектурами процессора. Дополнительные сведения см. в разделе «Примечания».
После установки этого значения для процесса последующие попытки очистить значение игнорируются. |
|
Система не отображает диалоговое окно отчеты об ошибках Windows. |
|
Функция OpenFile не отображает окно сообщения, если ей не удается найти файл. Вместо этого вызывающей объекту возвращается ошибка. Этот режим ошибок переопределяет флаг OF_PROMPT . |
Возвращаемое значение
Возвращаемое значение — это предыдущее состояние битовых флагов режима ошибки.
Комментарии
Каждый процесс имеет связанный режим ошибок, который указывает системе, как приложение будет реагировать на серьезные ошибки. Дочерний процесс наследует режим ошибок родительского процесса. Чтобы получить режим ошибок процесса, используйте функцию GetErrorMode .
Так как режим ошибок задан для всего процесса, необходимо убедиться, что многопотоковые приложения не задают различные флаги режима ошибок. Это может привести к несогласованной обработке ошибок.
Система не делает ошибки выравнивания видимыми для приложения на всех архитектурах процессора. Таким образом, указание SEM_NOALIGNMENTFAULTEXCEPT не является ошибкой в таких архитектурах, но система может автоматически игнорировать запрос. Это означает, что следующие последовательности кода не всегда допустимы на компьютерах x86:
C++ |
---|
SetErrorMode(SEM_NOALIGNMENTFAULTEXCEPT); fuOldErrorMode = SetErrorMode(0); ASSERT(fuOldErrorMode == SEM_NOALIGNMENTFAULTEXCEPT); |
Visual Studio 2005: При объявлении указателя на структуру, которая может не содержать выровненные данные, можно использовать __unaligned ключевое слово, чтобы указать, что тип должен считываться по одному байту за раз. Дополнительные сведения см. в разделе Выравнивание данных Windows.
Windows 7: Вызывающие стороны должны использовать SetThreadErrorMode вместо SetErrorMode , так как это менее нарушает нормальное поведение системы.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | errhandlingapi.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по