Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Specyficzne dla firmy Microsoft
Natychmiast przerywa proces wywoływania z minimalnym obciążeniem.
Składnia
__declspec(noreturn) 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
Nieodłączny | Architektura |
---|---|
__fastfail |
x86, x64, ARM, ARM64 |
Plik<nagłówka intrin.h>
END Microsoft Specific