__fastfail

Specyficzne dla firmy Microsoft

Natychmiast przerywa proces wywoływania z minimalnym obciążeniem.

Składnia

void __fastfail(unsigned int code);

Parametry

kod
[in] Stała symboliczna FAST_FAIL_<description> z winnt.h lub wdm.h wskazująca przyczynę zakończenia procesu.

Wartość zwracana

Funkcja wewnętrzna __fastfail nie zwraca.

Uwagi

Funkcja wewnętrzna __fastfail zapewnia mechanizm szybkiego żądania niepowodzenia — sposób na potencjalnie uszkodzony proces żądania natychmiastowego zakończenia procesu. Krytyczne błędy, które mogą mieć uszkodzony stan programu i stos poza odzyskiwaniem, nie mogą być obsługiwane przez zwykłą obsługę wyjątków. Użyj polecenia __fastfail , aby zakończyć proces przy użyciu minimalnego obciążenia.

__fastfail Wewnętrznie jest implementowany przy użyciu kilku mechanizmów specyficznych dla architektury:

Architektura Instrukcja Lokalizacja argumentu kodu
x86 0x29 int ecx
x64 0x29 int rcx
ARM 0xDEFB opcode r0
ARM64 0xF003 opcode x0

Szybkie żądanie niepowodzenia jest samodzielne i zwykle wymaga dwóch instrukcji do wykonania. Po wykonaniu szybkiego żądania niepowodzenia jądro podejmuje odpowiednią akcję. W kodzie trybu użytkownika nie ma zależności pamięci poza samym wskaźnikiem instrukcji, gdy zostanie zgłoszone szybkie zdarzenie niepowodzenia. To maksymalizuje jego niezawodność, nawet w przypadkach poważnego uszkodzenia pamięci.

Argument code , jedna z FAST_FAIL_<description> symbolicznych stałych z winnt.h lub wdm.h, opisuje typ warunku błędu. Jest on dołączany do raportów o awariach w sposób specyficzny dla środowiska.

Żądania szybkiego trybu użytkownika w trybie fail są wyświetlane jako drugi prawdopodobieństwo, że nie jest to ciągły wyjątek z kodem wyjątku 0xC0000409 i z co najmniej jednym parametrem wyjątku. Pierwszy parametr wyjątku jest wartością code . Ten kod wyjątku wskazuje Raportowanie błędów systemu Windows (WER) i infrastrukturę debugowania, którą proces jest uszkodzony, i że należy wykonać minimalne akcje w procesie w odpowiedzi na awarię. Żądania szybkiego trybu jądra są implementowane przy użyciu dedykowanego kodu KERNEL_SECURITY_CHECK_FAILURE kontroli usterek (0x139). W obu przypadkach nie są wywoływane żadne programy obsługi wyjątków, ponieważ program ma być w stanie uszkodzonym. Jeśli debuger jest obecny, daje możliwość zbadania stanu programu przed zakończeniem.

Obsługa natywnego szybkiego mechanizmu awarii rozpoczęła się w systemie Windows 8. Systemy operacyjne Windows, które nie obsługują szybkiej instrukcji awaryjnej natywnie, zwykle traktują szybkie żądanie niepowodzenia jako naruszenie dostępu lub jako usterkę UNEXPECTED_KERNEL_MODE_TRAP . W takich przypadkach program jest nadal przerywany, ale niekoniecznie tak szybko.

__fastfail jest dostępny tylko jako element wewnętrzny.

Wymagania

Wewnętrzne Architektura
__fastfail x86, x64, ARM, ARM64

Plik<nagłówka intrin.h>

END Microsoft Specific

Zobacz też

Funkcje wewnętrzne kompilatora