Sdílet prostřednictvím


__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

Viz také

Vnitřní funkce kompilátoru