Freigeben über


__fastfail

Microsoft-spezifisch

Beendet den aufrufenden Prozess mit minimalem Aufwand sofort.

Syntax

__declspec(noreturn) void __fastfail(unsigned int code);

Parameter

code
[in] Eine FAST_FAIL_<description> symbolische Konstante von winnt.h oder wdm.h, die den Grund für die Beendigung des Prozesses angibt.

Rückgabewert

Die systeminterne __fastfail-Funktion gibt keinen Wert zurück.

Hinweise

Das __fastfail systeminterne System bietet einen Mechanismus für eine schnelle Fail-Anforderung – eine Möglichkeit für einen potenziell beschädigten Prozess, um die sofortige Beendigung des Prozesses anzufordern. Kritische Fehler, die den Status des Programms und des Stapels unwiederbringlich beschädigt haben können, können von der regulären Ausnahmebehandlungsfunktion nicht verarbeitet werden. Mit __fastfail können Sie den Prozess mit minimalem Aufwand beenden.

Intern wird __fastfail mithilfe mehrerer architekturspezifischer Mechanismen implementiert:

Aufbau Anweisung Speicherort für das Code-Argument
x86 int 0x29 ecx
x64 int 0x29 rcx
ARM Opcode 0xDEFB r0
ARM64 Opcode-0xF003 x0

Eine Fast-Fail-Anforderung ist in sich abgeschlossen und erfordert in der Regel nur zwei Anweisungen, die ausgeführt werden müssen. Nachdem eine schnelle Fail-Anforderung ausgeführt wurde, führt der Kernel dann die entsprechende Aktion aus. Im Benutzermoduscode bestehen keine Speicherabhängigkeiten über den Anweisungszeiger selbst hinaus, wenn ein Fast-Fail-Ereignis ausgelöst wird. Dies maximiert seine Zuverlässigkeit, auch bei schwerwiegenden Speicherbeschädigungen.

Das code Argument, eine der FAST_FAIL_<description> symbolischen Konstanten von winnt.h oder wdm.h, beschreibt den Typ der Fehlerbedingung. Es wird in Fehlerberichte auf eine umgebungsspezifische Weise integriert.

Schnelle Fehleranforderungen für den Benutzermodus werden als zweite nicht zusammenhängende Ausnahme mit Ausnahmecode 0xC0000409 und mit mindestens einem Ausnahmeparameter angezeigt. Der erste Ausnahmeparameter ist der code-Wert. Dieser Ausnahmecode gibt an, dass die Windows-Fehlerberichterstattung (WER) und die Debuginfrastruktur beschädigt ist und dass minimale In-Process-Aktionen als Reaktion auf den Fehler ausgeführt werden sollten. Fast-Fail-Anforderungen im Kernelmodus werden mithilfe eines dedizierten Fehlercodes implementiert: KERNEL_SECURITY_CHECK_FAILURE (0x139). In beiden Fällen werden keine Ausnahmehandler aufgerufen, da davon ausgegangen wird, dass das Programm sich in einem beschädigten Zustand befindet. Wenn ein Debugger vorhanden ist, erhält er die Möglichkeit, den Status des Programms vor der Beendigung zu untersuchen.

Unterstützung für systemeigene Fast-Fail-Mechanismen begann mit Windows 8. Windows-Betriebssysteme, die die Fast Fail-Anweisung nicht unterstützen, behandeln in der Regel eine schnelle Fail-Anforderung als Zugriffsverletzung oder als UNEXPECTED_KERNEL_MODE_TRAP Fehlerüberprüfung. In diesen Fällen wird das Programm dennoch beendet, aber nicht unbedingt so schnell.

__fastfail ist nur als systeminterne Funktion verfügbar.

Anforderungen

Intrinsic Aufbau
__fastfail x86, x64, ARM, ARM64

Headerdatei<intrin.h>

Ende Microsoft-spezifisch

Siehe auch

Intrinsische Compilerfunktionen