Fehlerüberprüfung 0x1E: KMODE_EXCEPTION_NOT_HANDLED

Die KMODE_EXCEPTION_NOT_HANDLED fehlerüberprüfung hat den Wert 0x0000001E. Dies gibt an, dass ein Kernelmodusprogramm eine Ausnahme generiert hat, die der Fehlerhandler nicht abfangen konnte.

Wichtig

Dieses Thema richtet sich an Programmierer. Wenn Sie ein Kunde sind, der bei der Verwendung Ihres Computers einen Bluescreen-Fehlercode erhalten hat, finden Sie weitere Informationen unter Beheben von Bluescreenfehlern.

KMODE_EXCEPTION_NOT_HANDLED Parameter

Parameter Beschreibung

1

Der Ausnahmecode, der nicht behandelt wurde.

2

Die Adresse, an der die Ausnahme aufgetreten ist.

3

Parameter 0 der Ausnahme.

4

Parameter 1 der Ausnahme.

Ursache

Um diese Fehlerüberprüfung zu interpretieren, müssen Sie ermitteln, welche Ausnahme generiert wurde.

Zu den allgemeinen Ausnahmecodes gehören:

  • 0x80000002: STATUS_DATATYPE_MISALIGNMENT

    Ein nicht ausgerichteter Datenverweis wurde gefunden.

  • 0x80000003: STATUS_BREAKPOINT

    Ein Haltepunkt oder ASSERT wurde gefunden, wenn kein Kerneldebugger an das System angefügt wurde.

  • 0xC0000005: STATUS_ACCESS_VIOLATION

    Es ist eine Arbeitsspeicherzugriffsverletzung aufgetreten. (Parameter 4 der Fehlerüberprüfung ist die Adresse, auf die der Treiber zugreifen wollte.)

Eine vollständige Liste der Ausnahmecodes finden Sie unter NTSTATUS-Werte. Die Ausnahmecodes werden in ntstatus.h definiert, einer Headerdatei, die vom Windows Driver Kit bereitgestellt wird. (Weitere Informationen finden Sie unter Headerdateien im Windows Driver Kit).

Bemerkungen

Wenn Sie dieses Problem nicht debuggen können, können Sie einige grundlegende Problembehandlungstechniken verwenden, die unter Bluescreen-Daten beschrieben sind. Wenn in der Fehlerprüfungsmeldung ein Treiber angegeben ist, deaktivieren Sie ihn, oder wenden Sie sich an den Hersteller, um Treiberupdates anzufordern.

Hardwareinkompatibilität

Vergewissern Sie sich, dass jede neu installierte Hardware mit der installierten Version von Windows. Informationen zur erforderlichen Hardware finden Sie beispielsweise unter Windows 10 Spezifikationen.

Fehlerhafter Gerätetreiber oder Systemdienst

Darüber hinaus kann ein fehlerhafter Gerätetreiber oder Systemdienst für diesen Fehler verantwortlich sein. Hardwareprobleme wie BIOS-Inkompatibilitäten, Arbeitsspeicherkonflikte und IRQ-Konflikte können diesen Fehler ebenfalls generieren.

Wenn ein Treiber nach Namen in der Fehlerüberprüfungsmeldung aufgeführt wird, 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 Startsequenz auftritt und die Systempartition mit dem NTFS-Dateisystem formatiert ist, können Sie möglicherweise den Tresor-Modus verwenden, um den Treiber in der Geräte-Manager.

Überprüfen Sie die Systemprotokoll-Ereignisanzeige, um weitere Fehlermeldungen zu erhalten, mit denen sie das Gerät oder den Treiber, das bzw. der die Fehlerüberprüfung verursacht, auf 0x1E. Führen Sie außerdem die Hardwarediagnose aus, insbesondere die Vom Systemhersteller bereitgestellte Speicherscanner. Weitere Informationen zu diesen Verfahren finden Sie im Handbuch des Besitzers für Ihren Computer.

Der Fehler, der diese Meldung generiert, kann nach dem ersten Neustart während Windows Setup oder nach Abschluss des Setups auftreten. Eine mögliche Ursache für den Fehler ist eine System-BIOS-Inkompatibilität. BIOS-Probleme können durch ein Upgrade der BIOS-Systemversion behoben werden.

Lösung

Wenn Sie dieses Problem debuggen möchten, kann es schwierig sein, eine Stapelüberwachung zu erhalten. Die Ausnahmeadresse (Parameter 2) sollte den Treiber oder die Funktion angeben, der bzw. die dieses Problem verursacht hat.

Ausnahmecode 0x80000003 gibt an, dass ein hart codiertes Breakpoint oder eine Assertion getroffen wurde, das System jedoch mit dem Schalter /NODEBUG gestartet wurde. Dieses Problem sollte nur selten auftreten. Wenn sie wiederholt auftritt, stellen Sie sicher, dass ein Kerneldebugger verbunden ist und dass das System mit dem Schalter /DEBUG gestartet wird.

Wenn Ausnahmecode 0x80000002 auftritt, liefert der Trapframe zusätzliche Informationen.

Unbekannte Ursache

Wenn die spezifische Ursache der Ausnahme unbekannt ist, sollten Sie das folgende Verfahren verwenden, um eine Stapelüberwachung zu erhalten.

Hinweis

Bei diesem Verfahren wird davon ausgegangen, dass Sie NT! PspUnhandledExceptionInSystemThread. In einigen Fällen (z. B. absturz einer Zugriffsverletzung) ist dies jedoch nicht möglich. 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 Register Context auf den richtigen Wert zu setzen. Anschließend können Sie Stapelüberwachungen ausführen und andere Befehle ausführen.

So erhalten Sie eine Stapelüberwachung, wenn die normalen Stapelablaufverfolgungsvorgänge fehlschlagen

  1. Verwenden Sie den Befehl kb (display stack backtrace), um Parameter in der Stapelüberwachung anzuzeigen. Suchen Sie nach dem Aufruf von NT! PspUnhandledExceptionInSystemThread. (Wenn diese Funktion nicht aufgeführt ist, sehen Sie sich den Hinweis oben an.)

  2. Der erste Parameter für NT! PspUnhandledExceptionInSystemThread ist ein Zeiger auf eine -Struktur, die Zeiger auf eine except-Anweisung enthält:

    typedef struct _EXCEPTION_POINTERS {
        PEXCEPTION_RECORD ExceptionRecord;
        PCONTEXT ContextRecord;
        } EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
    
    ULONG PspUnhandledExceptionInSystemThread(
        IN PEXCEPTION_POINTERS ExceptionPointers
        )
    

    Verwenden Sie den Befehl dd (display memory) für diese Adresse, um die erforderlichen Daten anzuzeigen.

  3. Der erste abgerufene Wert ist ein Ausnahmedatensatz, der zweite ein Kontextdatensatz. Verwenden Sie den Befehl .exr (Ausnahmedatensatz anzeigen) und den Befehl .cxr (Kontextdatensatz anzeigen) mit diesen beiden Werten als Argumente.

  4. Nachdem der CXR-Befehl ausgeführt wurde, verwenden Sie den Befehl kb , um eine Stapelüberwachung anzuzeigen, die auf den Kontextdatensatzinformationen basiert. Diese Stapelüberwachung gibt den aufrufenden Stapel an, in dem die nicht behandelte Ausnahme aufgetreten ist.

Beispiel für eine Fehlerüberprüfung

Im Folgenden finden Sie ein Beispiel für die Fehlerüberprüfung 0x1E x86-Prozessors:

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