Partager via


__fastfail

Section spécifique à Microsoft

Arrête immédiatement le processus appelant avec une surcharge minimale.

Syntaxe

__declspec(noreturn) void __fastfail(unsigned int code);

Paramètres

code
[in] Constante FAST_FAIL_<description> symbolique de winnt.h ou wdm.h qui indique la raison de l’arrêt du processus.

Valeur retournée

Le __fastfail intrinsèque ne retourne pas.

Notes

L’intrinsèque __fastfail fournit un mécanisme pour une demande d’échec rapide, un moyen pour un processus potentiellement endommagé de demander l’arrêt immédiat du processus. Les défaillances critiques qui ont peut-être endommagé l'état du programme et la pile au-delà de toute récupération ne peuvent pas être gérées par la fonctionnalité de gestion des exceptions ordinaire. Utilisez __fastfail pour arrêter le processus à l'aide d'une surcharge minimale.

En interne, __fastfail est implémentée à l'aide de plusieurs mécanismes spécifiques à l'architecture :

Architecture Instruction Emplacement de l’argument de code
x86 int 0x29 ecx
x64 int 0x29 rcx
ARM Opcode 0xDEFB r0
ARM64 Opcode 0xF003 x0

Une demande de basculement rapide est autonome et son exécution ne nécessite généralement que deux instructions. Une fois qu’une demande d’échec rapide a été exécutée, le noyau effectue ensuite l’action appropriée. Dans le code en mode utilisateur, il n'existe aucune dépendance de mémoire au-delà du pointeur d'instruction proprement dit quand un événement de basculement rapide est déclenché. Cela optimise sa fiabilité, même en cas de corruption grave de la mémoire.

L’argument code , une des FAST_FAIL_<description> constantes symboliques de winnt.h ou wdm.h, décrit le type de condition d’échec. Il est incorporé dans les rapports d’échec d’une manière spécifique à l’environnement.

Les demandes d’échec rapide en mode utilisateur apparaissent sous la forme d’une deuxième exception non continuable avec du code d’exception 0xC0000409 et avec au moins un paramètre d’exception. Le premier paramètre de l'exception est la valeur code. Ce code d’exception indique à l’infrastructure de rapport d’erreurs Windows (WER) et au débogage que le processus est endommagé, et que des actions minimales in-process doivent être effectuées en réponse à l’échec. Les demandes de basculement rapide en mode noyau sont implémentées à l'aide d'un code de vérification d'erreur dédié, KERNEL_SECURITY_CHECK_FAILURE (0x139). Dans les deux cas, aucun gestionnaire d'exceptions n'est appelé car le programme est censé être dans un état endommagé. Si un débogueur est présent, il est possible d’examiner l’état du programme avant l’arrêt.

La prise en charge du mécanisme de basculement rapide natif est apparue dans Windows 8. Les systèmes d’exploitation Windows qui ne prennent pas en charge l’instruction d’échec rapide en mode natif traitent généralement une demande d’échec rapide comme une violation d’accès ou comme une vérification de UNEXPECTED_KERNEL_MODE_TRAP bogue. Dans ces cas-là, le programme est tout de même arrêté, mais pas nécessairement au rapidement.

__fastfail est uniquement disponible en tant qu'intrinsèque.

Spécifications

Intrinsic Architecture
__fastfail x86, x64, ARM, ARM64

Fichier<d’en-tête intrin.h>

FIN de la section spécifique à Microsoft

Voir aussi

Intrinsèques du compilateur