Fehlerüberprüfung 0x1E: KMODE_EXCEPTION_NOT_HANDLED
Die KMODE_EXCEPTION_NOT_HANDLED-Fehlerüberprüfung weist den Wert 0x0000001E auf. Die Fehlerüberprüfung zeigt an, dass ein Programm im Kernelmodus eine Ausnahme generiert hat, die der Fehlerhandler nicht abgefangen hat.
Wichtig
Dieser Artikel richtet sich an Programmierer*innen. Wenn Sie Microsoft-Kunde sind und auf Ihrem Computer ein Bluescreen-Fehlercode angezeigt wird, lesen Sie bitte Fehlerbehebung bei Bluescreen-Fehlern.
KMODE_EXCEPTION_NOT_HANDLED-Parameter
Parameter | Beschreibung |
---|---|
1 | Der Ausnahmecode, der nicht behandelt wurde. |
2 | Die Adresse, an der die Ausnahme aufgetreten ist. |
3 | Ausnahmeinformationsparameter 0 des Ausnahmedatensatzes. |
4 | Ausnahmeinformationsparameter 0 des Ausnahmedatensatzes. |
Ursache
Um diese Fehlerüberprüfung zu interpretieren, müssen Sie feststellen, welche Ausnahme generiert wurde.
Zu den allgemeinen Ausnahmecodes gehören:
0x80000002: STATUS_DATATYPE_MISALIGNMENT
Es wurde ein nicht ausgerichteter Datenverweis gefunden.
0x80000003: STATUS_BREAKPOINT
Ein Haltepunkt oder ASSERT wurde festgestellt, wenn kein Kerneldebugger an das System angefügt wurde.
0xC0000005: STATUS_ACCESS_VIOLATION
Es ist ein Speicherzugriffsverstoß aufgetreten. (Parameter 4 der Fehlerüberprüfung ist die Adresse, auf die der Treiber zugegriffen hat.)
Eine vollständige Liste der Ausnahmecodes finden Sie unter NTSTATUS-Werte. Die Ausnahmecodes werden in ntstatus.h definiert, einer Headerdatei, die sich im Windows Driver Kit befindet. (Weitere Informationen finden Sie unter Headerdateien im Windows Driver Kit).
Hinweise
Wenn Sie nicht bereit sind, dieses Problem zu debuggen, können Sie einige grundlegende Problembehandlungstechniken verwenden, die unter "Fehlerüberprüfungs-Bluescreen-Daten analysieren" beschrieben werden. Wenn in der Fehlerüberprüfungsmeldung ein Treiber angegeben ist, deaktivieren Sie den Treiber oder erkundigen Sie sich beim Hersteller nach Treiberupdates.
Hardware-Inkompatibilität
Bestätigen Sie, dass die neu installierte Hardware mit der installierten Windows-Version kompatibel ist. Informationen zur benötigten Hardware finden Sie beispielsweise unter Windows 10-Spezifikationen.
Fehlerhafter Gerätetreiber oder Systemdienst
Ein fehlerhafter Gerätetreiber oder Systemdienst kann diesen Fehler verursachen. Auch Hardwareprobleme wie BIOS-Inkompatibilitäten, Arbeitsspeicherkonflikte und IRQ-Konflikte können diesen Fehler verursachen.
Wenn ein Treiber in der Fehlerüberprüfungsmeldung anhand des Namens aufgeführt ist, deaktivieren oder entfernen Sie diesen Treiber. Deaktivieren oder entfernen Sie alle Treiber oder Dienste, die vor Kurzem hinzugefügt wurden. Wenn der Fehler während der Startreihenfolge auftritt und die Systempartition als NTFS-Dateisystem formatiert ist, können Sie den Treiber möglicherweise im abgesicherten Modus im Geräte-Manager deaktivieren.
Suchen Sie im Systemprotokoll in der Ereignisanzeige nach weiteren Fehlermeldungen, die Ihnen dabei helfen können, das Gerät oder den Treiber zu identifizieren, das/der die Fehlerüberprüfung 0x1E verursacht. Führen Sie auch Hardwarediagnosen aus, die vom Systemhersteller bereitgestellt werden, insbesondere den Speicherscanner. Weitere Informationen zu diesen Schritten zur Problembehandlung finden Sie im Handbuch des Besitzers für Ihren Computer.
Der Fehler, der diese Meldung generiert, kann nach dem ersten Neustart während des Windows-Setups oder nach Abschluss des Setups auftreten. Eine mögliche Ursache des Fehlers ist eine System-BIOS-Inkompatibilität. Sie können BIOS-Probleme beheben, indem Sie die System-BIOS-Version aktualisieren.
Lösung
Möglicherweise ist es schwierig, beim Debuggen dieses Problems eine Stapelablaufverfolgung zu erhalten. Die Ausnahmeadresse (Parameter 2) sollte den Treiber oder die Funktion identifizieren, der das Problem verursacht hat.
Ausnahmecode 0x80000003 gibt an, dass ein hartcodierter Haltepunkt oder eine Assertion getroffen wurde, das System jedoch mit dem /NODEBUG
Switch gestartet wurde. Dieses Problem sollte kaum auftreten. Wenn sie wiederholt auftritt, stellen Sie sicher, dass ein Kerneldebugger verbunden ist und dass das System mit dem /DEBUG
Switch gestartet wird.
Wenn Ausnahmecode 0x80000002 auftritt, liefert der Trapframe weitere Informationen.
Unbekannte Ursache.
Wenn die spezifische Ursache der Ausnahme unbekannt ist, sollten Sie die folgende Prozedur verwenden, um eine Stapelablaufverfolgung abzurufen.
Hinweis
Bei diesem Verfahren wird davon ausgegangen, dass Sie suchen NT!PspUnhandledExceptionInSystemThread
können. In einigen Fällen, z. B. bei einem Zugriffsverletzungsabsturz, können Sie jedoch nicht finden NT!PspUnhandledExceptionInSystemThread
. Suchen Sie in diesem Fall nach ntoskrnl!KiDispatchException
. Der dritte Parameter, der an diese Funktion übergeben wird, ist eine Trapframeadresse. Verwenden Sie den Befehl TRAP (Display Trap Frame) mit dieser Adresse, um den Registerkontext auf den richtigen Wert festzulegen. Anschließend können Sie Stapelüberwachungen ausführen und andere Befehle ausstellen.
Abrufen einer Stapelablaufverfolgung
So rufen Sie eine Stapelablaufverfolgung ab, wenn normale Stapelablaufverfolgungsprozeduren fehlschlagen:
Verwenden Sie den Befehl kb (display stack backtrace), um Parameter im Stack-Trace anzuzeigen. Suchen Sie nach dem Anruf an
NT!PspUnhandledExceptionInSystemThread
. (Wenn diese Funktion nicht aufgeführt ist, lesen Sie die vorherige Notiz.)Der erste Parameter ist
NT!PspUnhandledExceptionInSystemThread
ein Zeiger auf eine Struktur. Der Zeiger enthält Zeiger auf eineexcept
Anweisung:typedef struct _EXCEPTION_POINTERS { PEXCEPTION_RECORD ExceptionRecord; PCONTEXT ContextRecord; } EXCEPTION_POINTERS, *PEXCEPTION_POINTERS; ULONG PspUnhandledExceptionInSystemThread( IN PEXCEPTION_POINTERS ExceptionPointers )
Verwenden Sie den Befehl dd (Anzeigespeicher) auf dieser Adresse, um die benötigten Daten anzuzeigen.
Der erste abgerufene Wert ist ein Ausnahmedatensatz. Verwenden Sie für den Ausnahmedatensatz den Befehl ".exr" (Ausnahmedatensatz anzeigen).
Der zweite Wert ist ein Kontextdatensatz. Verwenden Sie für den Kontextdatensatz den Befehl .cxr (Anzeigekontextdatensatz).
Nachdem der
.cxr
Befehl ausgeführt wurde, verwenden Sie denkb
Befehl, um eine Stapelablaufverfolgung anzuzeigen, die auf den Kontextdatensatzinformationen basiert. Diese Stapelablaufverfolgung gibt den Aufrufstapel an, in dem die unbehandelte Ausnahme aufgetreten ist.
Beispielfehlerprüfung
Das folgende Beispiel zeigt eine Fehlerüberprüfung 0x1E auf einem x86-Prozessor:
kd> .bugcheck get the bug check data
Bugcheck code 0000001e
Arguments c0000005 8013cd0a 00000000 0362cffff
kd> kb start with a stack trace
FramePtr RetAddr Param1 Param2 Param3 Function Name
8013ed5c 801263ba 00000000 00000000 fe40cb00 NT!_DbgBreakPoint
8013eecc 8013313c 0000001e c0000005 8013cd0a NT!_KeBugCheckEx+0x194
fe40cad0 8013318e fe40caf8 801359ff fe40cb00 NT!PspUnhandledExceptionInSystemThread+0x18
fe40cad8 801359ff fe40cb00 00000000 fe40cb00 NT!PspSystemThreadStartup+0x4a
fe40cf7c 8013cb8e fe43a44c ff6ce388 00000000 NT!_except_handler3+0x47
00000000 00000000 00000000 00000000 00000000 NT!KiThreadStartup+0xe
kd> dd fe40caf8 L2 dump EXCEPTION_POINTERS structure
0xFE40CAF8 fe40cd88 fe40cbc4 ..@...@.
kd> .exr fe40cd88 first DWORD is the exception record
Exception Record @ FE40CD88:
ExceptionCode: c0000005
ExceptionFlags: 00000000
Chained Record: 00000000
ExceptionAddress: 8013cd0a
NumberParameters: 00000002
Parameter[0]: 00000000
Parameter[1]: 0362cfff
kd> .cxr fe40cbc4 second DWORD is the context record
CtxFlags: 00010017
eax=00087000 ebx=00000000 ecx=03ff0000 edx=ff63d000 esi=0362cfff edi=036b3fff
eip=8013cd0a esp=fe40ce50 ebp=fe40cef8 iopl=0 nv dn ei pl nz ac po cy
vip=0 vif=0
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010617
0x8013cd0a f3a4 rep movsb
kd> kb kb gives stack for context record
ChildEBP RetAddr Args to Child
fe40ce54 80402e09 ff6c4000 ff63d000 03ff0000 NT!_RtlMoveMemory@12+0x3e
fe40ce68 80403c18 ffbc0c28 ff6ce008 ff6c4000 HAL!_HalpCopyBufferMap@20+0x49
fe40ce9c fe43b1e4 ff6cef90 ffbc0c28 ff6ce009 HAL!_IoFlushAdapterBuffers@24+0x148
fe40ceb8 fe4385b4 ff6ce388 6cd00800 ffbc0c28 QIC117!_kdi_FlushDMABuffers@20+0x28
fe40cef8 fe439894 ff6cd008 ffb6c820 fe40cf4c QIC117!_cqd_CmdReadWrite@8+0x26e
fe40cf18 fe437d92 ff6cd008 ffb6c820 ff6e4e50 QIC117!_cqd_DispatchFRB@8+0x210
fe40cf30 fe43a4f5 ff6cd008 ffb6c820 00000000 QIC117!_cqd_ProcessFRB@8+0x134
fe40cf4c 80133184 ff6ce388 00000000 00000000 QIC117!_kdi_ThreadRun@4+0xa9
fe40cf7c 8013cb8e fe43a44c ff6ce388 00000000 NT!_PspSystemThreadStartup@8+0x40