SetErrorMode-Funktion (errhandlingapi.h)

Steuert, ob das System die angegebenen Typen schwerwiegender Fehler behandelt oder ob sie vom Prozess verarbeitet werden.

Syntax

UINT SetErrorMode(
  [in] UINT uMode
);

Parameter

[in] uMode

Der Prozessfehlermodus. Dieser Parameter kann einen oder mehrere der folgenden Werte aufweisen.

Wert Bedeutung
0
Verwenden Sie den Systemstandard, der darin besteht, alle Fehlerdialogfelder anzuzeigen.
SEM_FAILCRITICALERRORS
0x0001
Das Meldungsfeld critical-error-handler wird vom System nicht angezeigt. Stattdessen sendet das System den Fehler an den aufrufenden Prozess.

Eine bewährte Methode ist, dass alle Anwendungen beim Start die prozessweite SetErrorMode-Funktion mit dem Parameter SEM_FAILCRITICALERRORS aufrufen. Dies soll verhindern, dass Fehlermodusdialoge die Anwendung zum Absturz bringen.

SEM_NOALIGNMENTFAULTEXCEPT
0x0004
Das System behebt Fehler bei der Speicherausrichtung automatisch und macht sie für die Anwendung unsichtbar. Dies geschieht für den aufrufenden Prozess 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, den Wert zu löschen, 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 werden kann. Stattdessen wird der Fehler an den Aufrufer zurückgegeben. Dieser Fehlermodus überschreibt das flag OF_PROMPT .

Rückgabewert

Der Rückgabewert ist der vorherige Zustand der Fehlermodusbitflags.

Hinweise

Jeder Prozess verfügt über einen zugeordneten Fehlermodus, der dem System angibt, wie die Anwendung auf schwerwiegende Fehler reagieren wird. Ein untergeordneter Prozess erbt den Fehlermodus des übergeordneten Prozesses. Verwenden Sie die GetErrorMode-Funktion , um den Prozessfehlermodus abzurufen.

Da der Fehlermodus für den gesamten Prozess festgelegt ist, müssen Sie sicherstellen, dass Multithreadanwendungen keine unterschiedlichen Fehlermodusflags festlegen. Dies kann zu einer inkonsistenten Fehlerbehandlung führen.

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

C++
SetErrorMode(SEM_NOALIGNMENTFAULTEXCEPT); 
fuOldErrorMode = SetErrorMode(0); 
ASSERT(fuOldErrorMode == SEM_NOALIGNMENTFAULTEXCEPT);
Itanium: Eine Anwendung muss SetErrorMode explizit mit SEM_NOALIGNMENTFAULTEXCEPT aufrufen, damit ausrichtungsfehler vom System automatisch behoben werden. Die Standardeinstellung ist, dass das System Ausrichtungsfehler für eine Anwendung sichtbar macht.

Visual Studio 2005: Wenn Sie einen Zeiger auf eine Struktur deklarieren, die möglicherweise keine ausgerichteten Daten enthält, können Sie die __unaligned Schlüsselwort (keyword) verwenden, um anzugeben, dass der Typ jeweils ein Byte gelesen werden muss. Weitere Informationen finden Sie unter Windows-Datenausrichtung.

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

Anforderungen

Anforderung Wert
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 (Einschließen von Windows.h)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

Fehlerbehandlungsfunktionen

Fehlermodus

GetErrorMode

SetThreadErrorMode