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 |
---|---|
|
Verwenden Sie den Systemstandard, in dem alle Fehlerdialogfelder angezeigt werden. |
|
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. |
|
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. |
|
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. |
|
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); |
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 |