Partager via


SetErrorMode, fonction (errhandlingapi.h)

Contrôle si le système ou le processus gère les types d’erreurs graves spécifiés.

Syntaxe

UINT SetErrorMode(
  [in] UINT uMode
);

Paramètres

[in] uMode

Mode d’erreur du processus. Ce paramètre peut être une ou plusieurs des valeurs suivantes.

Valeur Signification
0
Utilisez la valeur par défaut du système, qui affiche toutes les boîtes de dialogue d’erreur.
SEM_FAILCRITICALERRORS
0x0001
Le système n’affiche pas la boîte de message du gestionnaire d’erreurs critiques. Au lieu de cela, le système envoie l’erreur au processus appelant.

La meilleure pratique est que toutes les applications appellent la fonction SetErrorMode à l’échelle du processus avec un paramètre de SEM_FAILCRITICALERRORS au démarrage. Cela permet d’empêcher la suspension des boîtes de dialogue en mode erreur de l’application.

SEM_NOALIGNMENTFAULTEXCEPT
0x0004
Le système corrige automatiquement les erreurs d’alignement de la mémoire et les rend invisibles à 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 Remarques.

Une fois cette valeur définie pour un processus, les tentatives suivantes d’effacement de la valeur sont ignorées.

SEM_NOGPFAULTERRORBOX
0x0002
Le système n’appelle pas le rapport d’erreurs Windows. Pour désactiver l’interface utilisateur du rapport d’erreurs Windows, appelez WerSetFlags avec l’indicateur WER_FAULT_REPORTING_NO_UI.
SEM_NOOPENFILEERRORBOX
0x8000
La fonction OpenFile n’affiche pas de boîte de message lorsqu’elle ne trouve pas de fichier. Au lieu de cela, l’erreur est retournée à l’appelant. Ce mode d’erreur remplace l’indicateur OF_PROMPT.

Valeur de retour

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 à des erreurs graves. Un processus enfant hérite du mode d’erreur de son processus parent. Pour récupérer le mode d’erreur du 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 d’indicateurs de mode d’erreur différents. Cela peut entraîner une gestion incohérente des erreurs.

Le système ne rend pas les erreurs d’alignement visibles par une application sur toutes les architectures du 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 silencieusement la requête. 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);
Itanium : Une application doit appeler explicitement SetErrorMode avec SEM_NOALIGNMENTFAULTEXCEPT pour que le système corrige automatiquement les erreurs d’alignement. Le paramètre par défaut est destiné au système pour rendre les erreurs d’alignement visibles par une application.

Visual Studio 2005 : Lors de la déclaration d’un pointeur vers une structure qui n’a peut-être pas de données alignées, vous pouvez utiliser le mot clé __unaligned pour indiquer que le type doit être lu un octet à la fois. Pour plus d’informations, consultez d’alignement des données Windows.

Windows 7 : appelants doivent favoriser SetThreadErrorMode sur setErrorMode, car il est moins perturbant au comportement normal du système.

Exigences

Exigence Valeur
client minimum pris en charge Windows XP [applications de bureau | Applications UWP]
serveur minimum pris en charge Windows Server 2003 [applications de bureau | Applications UWP]
plateforme cible Windows
d’en-tête errhandlingapi.h (include Windows.h)
bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

fonctions de gestion des erreurs

mode d’erreur

GetErrorMode

SetThreadErrorMode