Der Grund für die Ausnahme. Dies ist der Code, der von einer Hardwareausnahme oder dem code generiert wird, der in der RaiseException-Funktion für eine softwaregenerierte Ausnahme angegeben ist. In den folgenden Tabellen werden die Ausnahmecodes beschrieben, die wahrscheinlich aufgrund gängiger Programmierfehler auftreten.
Wert
Bedeutung
EXCEPTION_ACCESS_VIOLATION
Der Thread hat versucht, aus einer virtuellen Adresse zu lesen oder zu schreiben, für die er keinen entsprechenden Zugriff hat.
EXCEPTION_ARRAY_BOUNDS_EXCEEDED
Der Thread hat versucht, auf ein Arrayelement zuzugreifen, das nicht gebunden ist, und die zugrunde liegende Hardware unterstützt die Begrenzungsüberprüfung.
EXCEPTION_BREAKPOINT
Ein Haltepunkt wurde gefunden.
EXCEPTION_DATATYPE_MISALIGNMENT
Der Thread hat versucht, Daten zu lesen oder zu schreiben, die auf Hardware falsch ausgerichtet sind, die keine Ausrichtung bereitstellt. Beispielsweise müssen 16-Bit-Werte an 2-Byte-Grenzen ausgerichtet werden; 32-Bit-Werte auf 4-Byte-Grenzen und so weiter.
EXCEPTION_FLT_DENORMAL_OPERAND
Eine der Operanden in einem Gleitkommavorgang ist denormal. Ein Denormalwert ist ein Wert, der zu klein ist, um als Standard-Gleitkommawert darzustellen.
EXCEPTION_FLT_DIVIDE_BY_ZERO
Der Thread hat versucht, einen Gleitkommawert durch einen Gleitkommateiler von Null zu trennen.
EXCEPTION_FLT_INEXACT_RESULT
Das Ergebnis eines Gleitkommavorgangs kann nicht genau als Dezimalbruch dargestellt werden.
EXCEPTION_FLT_INVALID_OPERATION
Diese Ausnahme stellt jede gleitkommabezogene Ausnahme dar, die in dieser Liste nicht enthalten ist.
EXCEPTION_FLT_OVERFLOW
Die Exponent eines Gleitkommavorgangs ist größer als die von dem entsprechenden Typ zulässige Größe.
EXCEPTION_FLT_STACK_CHECK
Der Stapel überläuft oder unterläuft als Ergebnis eines Gleitkommavorgangs.
EXCEPTION_FLT_UNDERFLOW
Die Exponent eines Gleitkommavorgangs ist kleiner als die Größe, die vom entsprechenden Typ zulässig ist.
EXCEPTION_ILLEGAL_INSTRUCTION
Der Thread hat versucht, eine ungültige Anweisung auszuführen.
EXCEPTION_IN_PAGE_ERROR
Der Thread hat versucht, auf eine Seite zuzugreifen, die nicht vorhanden war, und das System konnte die Seite nicht laden. Diese Ausnahme kann beispielsweise auftreten, wenn beim Ausführen eines Programms über das Netzwerk eine Netzwerkverbindung verloren geht.
EXCEPTION_INT_DIVIDE_BY_ZERO
Der Thread hat versucht, einen ganzzahligen Wert durch einen ganzzahligen Teiler von Null zu teilen.
EXCEPTION_INT_OVERFLOW
Das Ergebnis eines ganzzahligen Vorgangs verursachte eine Durchführung des wichtigsten Teils des Ergebnisses.
EXCEPTION_INVALID_DISPOSITION
Ein Ausnahmehandler hat eine ungültige Disposition an den Ausnahme-Dispatcher zurückgegeben. Programmierer, die eine Sprache auf hoher Ebene verwenden, wie z. B. C, sollten diese Ausnahme nie auftreten.
EXCEPTION_NONCONTINUABLE_EXCEPTION
Der Thread hat versucht, die Ausführung fortzusetzen, nachdem eine nicht zusammenhängende Ausnahme aufgetreten ist.
EXCEPTION_PRIV_INSTRUCTION
Der Thread hat versucht, eine Anweisung auszuführen, deren Vorgang im aktuellen Computermodus nicht zulässig ist.
EXCEPTION_SINGLE_STEP
Ein Ablaufverfolgungsfall oder ein anderer Einzelanweisungsmechanismus signalisiert, dass eine Anweisung ausgeführt wurde.
EXCEPTION_STACK_OVERFLOW
Der Thread verwendet seinen Stapel.
Ein weiterer Ausnahmecode tritt wahrscheinlich beim Debuggen von Konsolenprozessen auf. Es tritt aufgrund eines Programmierfehlers nicht auf. Der DBG_CONTROL_C Ausnahmecode tritt auf, wenn STRG+C in einen Konsolenprozess eingegeben wird, der STRG+C-Signale behandelt und debuggen wird. Dieser Ausnahmecode soll nicht von Anwendungen behandelt werden. Es wird nur für den Vorteil des Debuggers ausgelöst und wird nur ausgelöst, wenn ein Debugger an den Konsolenprozess angefügt wird.
ExceptionFlags
Die Ausnahme-Flags. Dieses Element kann entweder Null sein, die eine fortlaufende Ausnahme angibt, oder EXCEPTION_NONCONTINUABLE , die eine nicht zusammenhängende Ausnahme angibt. Jeder Versuch, die Ausführung fortzusetzen, nachdem eine nichtkonstinierbare Ausnahme ausgeführt wurde, verursacht die EXCEPTION_NONCONTINUABLE_EXCEPTION Ausnahme.
ExceptionRecord
Ein Zeiger auf eine zugeordnete EXCEPTION_RECORD Struktur. Ausnahmedatensätze können zusammen verkettet werden, um zusätzliche Informationen bereitzustellen, wenn geschachtelte Ausnahmen auftreten.
ExceptionAddress
Die Adresse, an der die Ausnahme aufgetreten ist.
NumberParameters
Die Anzahl der Parameter, die der Ausnahme zugeordnet sind. Dies ist die Anzahl der definierten Elemente im ExceptionInformation-Array .
Ein Array zusätzlicher Argumente, die die Ausnahme beschreiben. Die RaiseException-Funktion kann dieses Array von Argumenten angeben. Für die meisten Ausnahmecodes sind die Arrayelemente nicht definiert. In der folgenden Tabelle werden die Ausnahmecodes beschrieben, deren Arrayelemente definiert sind.
Ausnahmecode
Bedeutung
EXCEPTION_ACCESS_VIOLATION
Das erste Element des Arrays enthält ein Lesezugriffs-Flag, das den Typ des Vorgangs angibt, der die Zugriffsverletzung verursacht hat. Wenn dieser Wert null ist, hat der Thread versucht, die nicht zugänglichen Daten zu lesen. Wenn dieser Wert 1 ist, hat der Thread versucht, in eine nicht zugängliche Adresse zu schreiben.
Wenn dieser Wert 8 ist, verursacht der Thread eine Verhinderung von Datenausführung im Benutzermodus (DEP).
Das zweite Arrayelement gibt die virtuelle Adresse der nicht zugänglichen Daten an.
EXCEPTION_IN_PAGE_ERROR
Das erste Element des Arrays enthält ein Lesezugriffs-Flag, das den Typ des Vorgangs angibt, der die Zugriffsverletzung verursacht hat. Wenn dieser Wert null ist, hat der Thread versucht, die nicht zugänglichen Daten zu lesen. Wenn dieser Wert 1 ist, hat der Thread versucht, in eine nicht zugängliche Adresse zu schreiben.
Wenn dieser Wert 8 ist, verursacht der Thread eine Verhinderung von Datenausführung im Benutzermodus (DEP).
Das zweite Arrayelement gibt die virtuelle Adresse der nicht zugänglichen Daten an.
Das dritte Arrayelement gibt den zugrunde liegenden NTSTATUS-Code an, der zu der Ausnahme führte.
Hinweise
Um einen Debugger zum Debuggen eines Ziels zu aktivieren, das auf einer anderen Architektur (32-Bit und 64-Bit) ausgeführt wird, verwenden Sie eine der expliziten Formen dieser Struktur.