__fastfail

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

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

Синтаксис

void __fastfail(unsigned int code);

Параметры

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

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

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

Замечания

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

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

Архитектура Инструкция Расположение аргумента кода
x86 int 0x29 ecx
x64 int 0x29 rcx
ARM Код операции 0xDEFB r0
ARM64 0xF003 opcode x0

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

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

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

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

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

Требования

Intrinsic Архитектура
__fastfail x86, x64, ARM, ARM64

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

Завершение блока, относящегося только к системам Майкрософт

См. также

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