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


__fastfail

Блок, относящийся только к системам Microsoft

Немедленно завершает вызывающий процесс с минимальными издержками.

void __fastfail(unsigned int code);

Параметры

  • [in] code
    Символьная константа FAST_FAIL_<description> из winnt.h или wdm.h, указывающая на причину завершения процесса.

Возвращаемое значение

Встроенная __fastfail не возвращается.

Заметки

Встроенная функция __fastfail предоставляет механизм для запроса Быстрый сбой — с его помощью потенциально поврежденный процесс запрашивает немедленное завершение процесса. Критические сбои, которые могут привести к повреждению состояния программы и стека после восстановления, не могут быть обработаны обычным механизмом обработки исключений. Используйте __fastfail для завершения процесса с минимальными издержками.

Внутренне __fastfail реализуется с помощью несколько механизмов в зависимости от конкретной архитектуры:

Архитектура

Инструкция

Расположение аргумента кода

x86

int 0x29

ecx

x64

int 0x29

rcx

ARM

Код операции 0xDEFB

r0

Запрос быстрого сбоя является самодостаточным и обычно требует только две команды для выполнения. После выполнения запроса быстрого сбоя ядро предпринимает соответствующие действия. В коде пользовательского режима отсутствуют зависимости памяти за пределами самого указателя инструкций, когда происходит событие быстрого сбоя. Это увеличивает его надежность, даже в случае серьезного повреждения памяти.

Аргумент code — одна из символьных констант FAST_FAIL_<description> из winnt.h или wdm.h — описывает тип состояния ошибки и включается в отчеты об ошибке в соответствии с конкретной средой.

Запросы пользовательского режима быстрого сбоя отображаются как второй экземпляр не допускающее исключения с кодом исключения 0xC0000409 и исключение по крайней мере один параметр. Первый параметр исключения — значение code . Этот код исключения указывает Windows Error Reporting (WER) и инфраструктуре отладки, что процесс поврежден и минимальные действия внутри процесса необходимы в ответ на сбой. Запросы быстрого сбоя в режиме ядра реализованы с помощью особого отладочного кода, KERNEL_SECURITY_CHECK_FAILURE (0x139). В обоих случаях обработчики исключений не вызываются, поскольку программа предположительно в поврежденном состоянии. Если отладчик присутствует, ему дается возможность проверки состояния программы перед завершением.

Поддержка собственного механизма быстрого сбоя началась с Windows 8. Операционные системы Windows, которые изначально не поддерживают инструкцию быстрого сбоя, обычно будут рассматривать запрос на быстрый сбой как нарушение прав доступа или как код отладки UNEXPECTED_KERNEL_MODE_TRAP. В этих случаях программа по-прежнему завершается, но не обязательно как можно быстрее.

__fastfail доступна только как встроенная.

Требования

Встроенная функция

Архитектура

__fastfail

x86 x64, ARM

Файл заголовка <intrin.h>

См. также

Ссылки

Встроенные объекты компилятора