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 |
---|---|
|
Verwenden Sie den Systemstandard, der darin besteht, alle Fehlerdialogfelder anzuzeigen. |
|
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. |
|
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. |
|
Das System zeigt das Dialogfeld Windows-Fehlerberichterstattung nicht an. |
|
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); |
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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für