SetErrorMode-Funktion (errhandlingapi.h)

Steuert, ob das System die angegebenen Arten von schwerwiegenden Fehlern behandelt oder ob der Prozess sie behandelt.

Syntax

UINT SetErrorMode(
  [in] UINT uMode
);

Parameter

[in] uMode

Der Prozessfehlermodus. Dieser Parameter kann eine oder mehrere der folgenden Werte sein.

Wert Bedeutung
0
Verwenden Sie den Systemstandard, der alle Fehlerdialogfelder anzeigt.
SEM_FAILCRITICALERRORS
0x0001
Das System zeigt das Meldungsfeld für den kritischen Fehlerhandler nicht an. Stattdessen sendet das System den Fehler an den Aufrufvorgang.

Bewährte Methode ist, dass alle Anwendungen die prozessweite SetErrorMode-Funktion mit einem Parameter von SEM_FAILCRITICALERRORS beim Start aufrufen. Dies ist die Verhinderung von Fehlermodusdialogfeldern, die die Anwendung hängen.

SEM_NOALIGNMENTFAULTEXCEPT
0x0004
Das System korrigiert automatisch Speicherausrichtungsfehler und macht sie für die Anwendung unsichtbar. Dies erfolgt für den Aufrufprozess und alle absteigenden Prozesse. Dieses Feature wird nur von bestimmten Prozessorarchitekturen unterstützt. Weitere Informationen finden Sie im Abschnitt mit Hinweisen.

Nachdem dieser Wert für einen Prozess festgelegt wurde, werden nachfolgende Versuche zum Löschen des Werts ignoriert.

SEM_NOGPFAULTERRORBOX
0x0002
Das System zeigt das dialogfeld Windows-Fehlerberichterstattung nicht an.
SEM_NOOPENFILEERRORBOX
0x8000
Die OpenFile-Funktion zeigt kein Meldungsfeld an, wenn eine Datei nicht gefunden wird. Stattdessen wird der Fehler an den Aufrufer zurückgegeben. Dieser Fehlermodus überschreibt das OF_PROMPT Flag.

Rückgabewert

Der Rückgabewert ist der vorherige Zustand der Fehlermodus-Bit-Flags.

Hinweise

Jeder Prozess verfügt über einen zugeordneten Fehlermodus, der angibt, wie die Anwendung auf schwerwiegende Fehler reagiert. Ein untergeordneter Prozess erbt den Fehlermodus des übergeordneten Prozesses. Um den Prozessfehlermodus abzurufen, verwenden Sie die GetErrorMode-Funktion .

Da der Fehlermodus für den gesamten Prozess festgelegt ist, müssen Sie sicherstellen, dass multithreaded-Anwendungen keine unterschiedlichen Fehlermodus-Flags festlegen. Dies kann dazu führen, dass die Fehlerbehandlung inkonsistent ist.

Das System macht keine Ausrichtungsfehler für eine Anwendung auf allen Prozessorarchitekturen sichtbar. Daher ist die Angabe SEM_NOALIGNMENTFAULTEXCEPT kein Fehler für solche Architekturen, aber das System kann die Anforderung nicht einfach ignorieren. Dies bedeutet, dass Codesequenzen wie die folgenden nicht immer auf x86-Computern gültig sind:

C++
SetErrorMode(SEM_NOALIGNMENTFAULTEXCEPT); 
fuOldErrorMode = SetErrorMode(0); 
ASSERT(fuOldErrorMode == SEM_NOALIGNMENTFAULTEXCEPT);
Itanium: Eine Anwendung muss SetErrorMode explizit mit SEM_NOALIGNMENTFAULTEXCEPT aufrufen, um die Ausrichtungsfehler des Systems automatisch zu beheben. Die Standardeinstellung ist für das System, um Ausrichtungsfehler für eine Anwendung sichtbar zu machen.

Visual Studio 2005: Wenn Sie einen Zeiger auf eine Struktur deklarieren, die möglicherweise keine Ausgerichteten Daten aufweist, können Sie das schlüsselwort __unaligned verwenden, um anzugeben, dass der Typ jeweils ein Byte gelesen werden muss. Weitere Informationen finden Sie unter Windows Data Alignment.

Windows 7: Anrufer sollten SetThreadErrorMode über SetErrorMode bevorzugen, da es weniger störend für das normale Verhalten des Systems ist.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile errhandlingapi.h (enthalten Windows.h)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

Fehlerbehandlungsfunktionen

Fehlermodus

GetErrorMode

SetThreadErrorMode