__fastfail
Sezione specifica Microsoft
Termina immediatamente il processo chiamante con un sovraccarico minimo.
Sintassi
__declspec(noreturn) void __fastfail(unsigned int code);
Parametri
code
[in] Costante FAST_FAIL_<description>
simbolica di winnt.h o wdm.h che indica il motivo della terminazione del processo.
Valore restituito
La funzione intrinseca __fastfail
non restituisce alcun risultato.
Osservazioni:
L'intrinseco __fastfail
fornisce un meccanismo per una richiesta di errore rapido, un modo per un processo potenzialmente danneggiato per richiedere la terminazione immediata del processo. Gli errori critici che possono aver danneggiato lo stato del programma e lo stack senza ripristino non possono essere gestiti tramite la normale funzionalità di gestione delle eccezioni. Usare __fastfail
per terminare il processo con un sovraccarico minimo.
Internamente, __fastfail
viene implementato tramite diversi meccanismi specifici per l'architettura:
Architettura | Istruzione | Posizione dell'argomento code |
---|---|---|
x86 | int 0x29 | ecx |
x64 | int 0x29 | rcx |
ARM | Opcode 0xDEFB | r0 |
ARM64 | Opcode 0xF003 | x0 |
Una richiesta di errore immediato è autonoma e in genere richiede l'esecuzione di solo due istruzioni. Dopo l'esecuzione di una richiesta di errore rapido, il kernel esegue quindi l'azione appropriata. Quando viene generato un evento di errore immediato, nel codice in modalità utente non ci sono dipendenze di memoria oltre al puntatore all'istruzione stesso. In questo modo si ottimizza l'affidabilità, anche in caso di grave danneggiamento della memoria.
L'argomento code
, una delle FAST_FAIL_<description>
costanti simboliche di winnt.h o wdm.h, descrive il tipo di condizione di errore. È incorporato nei report degli errori in modo specifico dell'ambiente.
Le richieste di errore rapido in modalità utente vengono visualizzate come seconda eccezione non continuabile con codice di eccezione 0xC0000409 e con almeno un parametro di eccezione. Il primo parametro dell'eccezione è il valore code
. Questo codice di eccezione indica all'infrastruttura di Segnalazione errori Windows (WER) e di debug danneggiata dal processo e che devono essere eseguite azioni minime in-process in risposta all'errore. Le richieste di errore immediato in modalità kernel vengono implementate usando un codice di controllo errori dedicato, KERNEL_SECURITY_CHECK_FAILURE
(0x139). In entrambi i casi, non vengono richiamati i gestori delle eccezioni perché è previsto che lo stato del programma sia danneggiato. Se è presente un debugger, è possibile esaminare lo stato del programma prima della terminazione.
Il supporto del meccanismo nativo di errore immediato è iniziato in Windows 8. I sistemi operativi Windows che non supportano l'istruzione fast fail vengono in genere considerati in modo nativo una richiesta di errore rapido come violazione di accesso o come UNEXPECTED_KERNEL_MODE_TRAP
controllo di bug. In questi casi, il programma viene comunque terminato, ma non necessariamente con la stessa rapidità.
__fastfail
è disponibile solo come funzione intrinseca.
Requisiti
Intrinsic | Architettura |
---|---|
__fastfail |
x86, x64, ARM, ARM64 |
<File di intestazione intrin.h>
Fine sezione specifica Microsoft