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
0
Utilisez la valeur par défaut du système, qui consiste à afficher toutes les boîtes de dialogue d’erreur.
SEM_FAILCRITICALERRORS
0x0001
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.

SEM_NOALIGNMENTFAULTEXCEPT
0x0004
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.

SEM_NOGPFAULTERRORBOX
0x0002
Le système n’affiche pas la boîte de dialogue Rapport d'erreurs Windows.
SEM_NOOPENFILEERRORBOX
0x8000
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);
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 que le système rende les erreurs d’alignement visibles pour une application.

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

Fonctions de gestion des erreurs

Mode d’erreur

GetErrorMode

SetThreadErrorMode