Bevor Sie feststellen, was diesen Fehler verursacht, müssen Sie die Ausnahme identifizieren. Drei gängige Ausnahmecodes sind:
0x80000002 STATUS_DATATYPE_MISALIGNMENT.
Es wurde eine nicht ausgerichtete Datenreferenz gefunden.
0x80000003 STATUS_BREAKPOINT.
Ein Haltepunkt oder ASSERT wurde festgestellt, als kein Kernel-Debugger an das System angeschlossen war.
0xC0000005 STATUS_ACCESS_VIOLATION.
Eine Speicherzugriffsverletzung ist aufgetreten.
Parameter 4 (oben) ist die Adresse, auf die der Treiber zuzugreifen versuchte.
Eine vollständige Liste der Ausnahmecodes finden Sie in der Datei ntstatus.h im Verzeichnis inc des Windows Driver Kit.
Grundlegende Fehlerbehebung und Lösung
Beginnen Sie auf einer einfacheren Ebene mit diesen grundlegenden Schritten zur Fehlerbehebung.
- Wenn der Treiber schuld ist, deaktivieren Sie den Treiber oder suchen Sie nach Treiberaktualisierungen.
- Versuchen Sie, die Grafikkarte im Computer auszutauschen, um zu sehen, ob das Problem behoben ist.
- Suchen Sie auf der Website des Motherboard-Herstellers nach einem BIOS-Update.
- Greifen Sie auf das BIOS zu und deaktivieren Sie das Speicher-Caching oder Memory Shadowing.
Wenn Ihr Problem nicht behoben ist, vergleichen Sie kürzlich installierte Hardware mit der Liste der getesteten Produkte von Windows Marketplace und vergewissern Sie sich, dass sie mit Ihrer Windows-Version kompatibel ist.
Wenn ein Gerätetreiber fehlerhaft ist, verwenden Sie die Umgebung des abgesicherten Modus, indem Sie F8 auf der Tastatur drücken, wenn Ihr Computer hochfährt (bevor Sie Windows aufrufen). Wählen Sie den abgesicherten Modus aus dem Startmenü, wenn es angezeigt wird. Im abgesicherten Modus können Sie den fehlerhaften Gerätetreiber löschen und den Computer neu starten. Fahren Sie mit der Installation eines aktualisierten Treibers fort, falls einer verfügbar ist.
Sie können auch das Systemprotokoll in der Ereignisanzeige überprüfen, um festzustellen, ob Fehlermeldungen vorhanden sind. Diese Fehlermeldungen können helfen, die Ursache des Problems zu identifizieren.
Komplexe Fehlersuche
Zusätzliche, komplexere Schritte zur Fehlerbehebung können unternommen werden, wenn die oben genannten Lösungen das Problem nicht lösen. Diese Schritte beinhalten den Zugriff auf einen Stack-Trace, um festzustellen, was das Problem verursacht.
Gehen Sie folgendermaßen vor, um einen Stack-Trace zu erhalten:
- Führen Sie den Befehl kb (Display Stack Backtrace) aus, um die Parameter im Stack-Trace anzuzeigen. Suchen Sie nach einem Aufruf von NT!PspUnhandledExceptionInSystemThread.
- Der erste Parameter im Aufruf zeigt auf eine Struktur, die zusätzliche Zeiger auf eine except-Anweisung enthält.
- Führen Sie den Befehl dd (Display Memory) für die Adresse aus, um die entsprechenden Informationen abzurufen und anzuzeigen.
- Führen Sie die Befehle .exr (Ausnahmedatensatz anzeigen) und .cxr (Kontextdatensatz anzeigen) mit den beiden im vorherigen Schritt abgerufenen Werten als Argumente für die Befehle aus.
- Verwenden Sie nach dem Ausführen des .cxr-Befehls den kb-Befehl, um den Stack-Trace basierend auf den Kontextdatensatzdaten anzuzeigen. Der Stack-Trace gibt an, wo die nicht behandelte Ausnahme aufgetreten ist.
Wenn Sie den Aufruf in Schritt 1 nicht finden können, suchen Sie stattdessen nach ntoskrnl!KiDispatchException. Führen Sie unter Verwendung der Trap-Frame-Adresse (dritter Parameter) den Befehl .trap (Display Trap Frame) aus, um den Registerkontext auf den entsprechenden Wert festzulegen, um Stack-Traces und andere Befehle auszuführen.