Freigeben über


SetErrorMode-Funktion (errhandlingapi.h)

Steuert, ob das System oder der Prozess die angegebenen schwerwiegenden Fehlertypen behandelt.

Syntax

UINT SetErrorMode(
  [in] UINT uMode
);

Parameter

[in] uMode

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

Wert Bedeutung
0
Verwenden Sie den Systemstandard, in dem alle Fehlerdialogfelder angezeigt werden.
SEM_FAILCRITICALERRORS
0x0001
Das System zeigt das Meldungsfeld für kritische Fehlerhandler nicht an. Stattdessen sendet das System den Fehler an den aufrufenden Prozess.

Bewährte Methode ist, dass alle Anwendungen die prozessweite SetErrorMode- Funktion mit einem Parameter von SEM_FAILCRITICALERRORS beim Start aufrufen. Dadurch wird verhindert, dass Dialogfelder im Fehlermodus die Anwendung hängen.

SEM_NOALIGNMENTFAULTEXCEPT
0x0004
Das System behebt automatisch Fehler bei der Speicherausrichtung und macht sie für die Anwendung unsichtbar. Dies gilt für den aufrufenden Prozess und alle untergeordneten Prozesse. Dieses Feature wird nur von bestimmten Prozessorarchitekturen unterstützt. Weitere Informationen finden Sie im Abschnitt "Hinweise".

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

SEM_NOGPFAULTERRORBOX
0x0002
Das System ruft keine Windows-Fehlerberichterstattung auf. Rufen Sie "WerSetFlags" mit der WER_FAULT_REPORTING_NO_UI-Kennzeichnung auf, um die Benutzeroberfläche der Windows-Fehlerberichterstattung zu deaktivieren.
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 setzt das OF_PROMPT Flag außer Kraft.

Rückgabewert

Der Rückgabewert ist der vorherige Zustand der Bitkennzeichnungen im Fehlermodus.

Bemerkungen

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. Verwenden Sie zum Abrufen des Prozessfehlermodus die GetErrorMode--Funktion.

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

Das System macht keine Ausrichtungsfehler für eine Anwendung in allen Prozessorarchitekturen sichtbar. Daher ist die Angabe von SEM_NOALIGNMENTFAULTEXCEPT kein Fehler für solche Architekturen, aber das System kann die Anforderung im Hintergrund 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 explizit SetErrorMode- mit SEM_NOALIGNMENTFAULTEXCEPT aufrufen, damit das System automatisch Ausrichtungsfehler korrigiert. 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 enthält, 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 gegenüber SetErrorMode- bevorzugen, da es weniger störend für das normale Verhalten des Systems ist.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows XP [Desktop-Apps | UWP-Apps]
mindestens unterstützte Server- Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform- Fenster
Header- errhandlingapi.h (include Windows.h)
Library Kernel32.lib
DLL- Kernel32.dll

Siehe auch

Fehlerbehandlungsfunktionen

Fehlermodus

GetErrorMode-

SetThreadErrorMode-