__fastfail
Specifické pro Microsoft
Okamžitě ukončí proces volání s minimální režií.
Syntaxe
__declspec(noreturn) void __fastfail(unsigned int code);
Parametry
kód
[v] Symbolická konstanta FAST_FAIL_<description>
z winnt.h nebo wdm.h, která označuje důvod ukončení procesu.
Vrácená hodnota
__fastfail
Vnitřní objekt se nevrátí.
Poznámky
Vnitřní __fastfail
objekt poskytuje mechanismus rychlého požadavku na selhání – způsob, jak potenciálně poškozený proces požádat o okamžité ukončení procesu. Běžná zařízení pro zpracování výjimek nemůže zpracovat kritické chyby, které můžou mít poškozený stav programu a zásobník nad rámec obnovení. Slouží __fastfail
k ukončení procesu s minimální režií.
Interně __fastfail
se implementuje pomocí několika mechanismů specifických pro architekturu:
Architektura | Pokyn | Umístění argumentu kódu |
---|---|---|
x86 | int 0x29 | ecx |
x64 | int 0x29 | rcx |
ARM | 0xDEFB opcode | r0 |
ARM64 | 0xF003 opcode | x0 |
Rychlá žádost o selhání je samostatná a obvykle vyžaduje pouze dva pokyny ke spuštění. Po provedení rychlého požadavku na selhání provede jádro příslušnou akci. V kódu v uživatelském režimu nejsou žádné závislosti paměti nad rámec samotného ukazatele instrukce, pokud je vyvolána rychlá událost selhání. To maximalizuje spolehlivost, a to i v případě závažného poškození paměti.
Argument code
, jedna z FAST_FAIL_<description>
symbolických konstant z winnt.h nebo wdm.h, popisuje typ podmínky selhání. Je začleněna do sestav selhání určitým způsobem.
Žádosti o rychlé selhání v uživatelském režimu se zobrazují jako druhá šance, že neskontinuovatelná výjimka s kódem výjimky 0xC0000409 a s alespoň jedním parametrem výjimky. První parametr výjimky je code
hodnota. Tento kód výjimky označuje infrastrukturu Zasílání zpráv o chybách systému Windows (WER) a ladicí infrastrukturu, která je poškozena, a že v reakci na selhání by se měly provést minimální akce v procesu. Rychlé požadavky na selhání v režimu jádra se implementují pomocí vyhrazeného kódu KERNEL_SECURITY_CHECK_FAILURE
kontroly chyb (0x139). V obou případech nejsou vyvolány žádné obslužné rutiny výjimek, protože se očekává, že program bude v poškozeném stavu. Pokud je k dispozici ladicí program, má možnost prozkoumat stav programu před ukončením.
Podpora nativního rychlého mechanismu selhání začala ve Windows 8. Operační systémy Windows, které nativně nepodporují rychlou instrukci selhání, obvykle zachází s rychlým neúspěšným požadavkem jako s porušením přístupu nebo jako s kontrolou UNEXPECTED_KERNEL_MODE_TRAP
chyb. V těchto případech je program stále ukončen, ale nemusí nutně tak rychle.
__fastfail
je k dispozici pouze jako vnitřní.
Požadavky
Vnitřní | Architektura |
---|---|
__fastfail |
x86, x64, ARM, ARM64 |
Hlavičkový soubor<intrin.h>
END Microsoft Specific