SetErrorMode, fonction (errhandlingapi.h)
Contrôle si le système gère les types d’erreurs graves spécifiés ou si le processus les gère.
Syntaxe
UINT SetErrorMode(
[in] UINT uMode
);
Paramètres
[in] uMode
Mode d’erreur de processus. Ce paramètre peut prendre une ou plusieurs des valeurs suivantes.
Valeur | Signification |
---|---|
|
Utilisez la valeur par défaut du système, qui consiste à afficher toutes les boîtes de dialogue d’erreur. |
|
Le système n’affiche pas la boîte de message critical-error-handler. Au lieu de cela, le système envoie l’erreur au processus appelant.
Il est recommandé que toutes les applications appellent la fonction SetErrorMode à l’échelle du processus avec un paramètre de SEM_FAILCRITICALERRORS au démarrage. Il s’agit d’empêcher les boîtes de dialogue en mode d’erreur de suspendre l’application. |
|
Le système corrige automatiquement les erreurs d’alignement de la mémoire et les rend invisibles pour l’application. Il effectue cette opération pour le processus appelant et tous les processus descendants. Cette fonctionnalité est uniquement prise en charge par certaines architectures de processeur. Pour plus d'informations, consultez la section Notes.
Une fois cette valeur définie pour un processus, les tentatives suivantes d’effacement de la valeur sont ignorées. |
|
Le système n’affiche pas la boîte de dialogue Rapport d'erreurs Windows. |
|
La fonction OpenFile n’affiche pas de boîte de message lorsqu’elle ne parvient pas à trouver un fichier. Au lieu de cela, l’erreur est retournée à l’appelant. Ce mode d’erreur remplace l’indicateur OF_PROMPT . |
Valeur retournée
La valeur de retour est l’état précédent des indicateurs de bits en mode erreur.
Remarques
Chaque processus a un mode d’erreur associé qui indique au système comment l’application va répondre aux erreurs graves. Un processus enfant hérite du mode d’erreur de son processus parent. Pour récupérer le mode d’erreur de processus, utilisez la fonction GetErrorMode .
Étant donné que le mode d’erreur est défini pour l’ensemble du processus, vous devez vous assurer que les applications multithreads ne définissent pas différents indicateurs de mode d’erreur. Cela peut entraîner une gestion incohérente des erreurs.
Le système ne rend pas les erreurs d’alignement visibles pour une application sur toutes les architectures de processeur. Par conséquent, la spécification de SEM_NOALIGNMENTFAULTEXCEPT n’est pas une erreur sur ces architectures, mais le système est libre d’ignorer la demande en mode silencieux. Cela signifie que les séquences de code telles que les suivantes ne sont pas toujours valides sur les ordinateurs x86 :
C++ |
---|
SetErrorMode(SEM_NOALIGNMENTFAULTEXCEPT); fuOldErrorMode = SetErrorMode(0); ASSERT(fuOldErrorMode == SEM_NOALIGNMENTFAULTEXCEPT); |
Visual Studio 2005 : Lorsque vous déclarez un pointeur vers une structure qui n’a peut-être pas de données alignées, vous pouvez utiliser la mot clé __unaligned pour indiquer que le type doit être lu un octet à la fois. Pour plus d’informations, consultez Alignement des données Windows.
Windows 7 : Les appelants doivent privilégier SetThreadErrorMode par rapport à SetErrorMode , car il perturbe moins le comportement normal du système.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP [applications de bureau | applications UWP] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau | applications UWP] |
Plateforme cible | Windows |
En-tête | errhandlingapi.h (inclure Windows.h) |
Bibliothèque | Kernel32.lib |
DLL | Kernel32.dll |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour