다음을 통해 공유


__fastfail

Microsoft 전용

최소한의 오버헤드로 호출 프로세스를 즉시 종료합니다.

구문

__declspec(noreturn) 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 Opcode 0xDEFB r0
ARM64 Opcode 0xF003 x0

빠른 실패 요청은 독립적이며 대개 두 가지 명령만 있으면 실행할 수 있습니다. 빠른 실패 요청이 실행된 후 커널은 적절한 작업을 수행합니다. 사용자 모드 코드에서는 빠른 실패 이벤트 발생 시 명령 포인터 자체 이외의 메모리 종속성이 없습니다. 이는 심각한 메모리 손상의 경우에도 안정성을 최대화합니다.

winnt.h 또는 wdm.h의 기호 상수 중 FAST_FAIL_<description> 하나인 인수는 code 오류 조건의 형식을 설명합니다. 환경별 방식으로 오류 보고서에 통합됩니다.

사용자 모드 빠른 실패 요청은 예외 코드 0xC0000409 예외 매개 변수가 하나 이상 있는 두 번째 예외가 연속되지 않는 예외로 나타납니다. 첫 번째 예외 매개 변수는 code 값입니다. 이 예외 코드는 WER(Windows 오류 보고) 및 디버깅 인프라에 프로세스가 손상되었으며 오류에 대한 응답으로 최소한의 프로세스 내 작업을 수행해야 임을 나타냅니다. 커널 모드 빠른 실패 요청은 전용 버그 검사 코드인 KERNEL_SECURITY_CHECK_FAILURE(0x139)를 사용하여 구현됩니다. 두 경우 모두 프로그램이 손상된 상태로 간주되므로 예외 처리기가 호출되지 않습니다. 디버거가 있는 경우 종료 전에 프로그램의 상태를 검사할 수 있는 기회가 제공됩니다.

Windows 8부터는 빠른 실패 메커니즘이 기본적으로 지원됩니다. 기본적으로 빠른 실패 명령을 지원하지 않는 Windows 운영 체제는 일반적으로 빠른 실패 요청을 액세스 위반 또는 버그 검사로 UNEXPECTED_KERNEL_MODE_TRAP 처리합니다. 이러한 경우에도 프로그램은 종료되지만 종료 속도는 느려질 수 있습니다.

__fastfail은 내장 함수로만 사용할 수 있습니다.

요구 사항

Intrinsic 아키텍처
__fastfail x86, x64, ARM, ARM64

헤더 파일<intrin.h>

Microsoft 전용 종료

참고 항목

컴파일러 내장 함수