__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