Windows-Fehlercodes
Finde heraus, was ein Windows-Fehlercode bedeutet: die Win32-Codes von GetLastError, HRESULT wie 0x80070005, NTSTATUS wie 0xC0000005 und Bluescreen-Codes. Das Tool akzeptiert den Wert hexadezimal oder dezimal, den symbolischen Namen oder einen Teil der Meldung und zerlegt das HRESULT in seine Felder.
Beispiele:

Namen und Beschreibungen © Microsoft Corporation, entnommen den Headerdateien des Windows SDK und der Dokumentation auf Microsoft Learn, die unter der Lizenz CC BY 4.0 veröffentlicht wird. Die Beschreibungen werden in deiner Sprache angezeigt, sofern Microsoft sie übersetzt hat.Systemfehlercodes auf Microsoft Learn

Häufige Fehler

Windows Update, Installationen und Dateien

Programme, die sich nicht öffnen oder abstürzen

Bluescreens (Bug Checks)

So funktioniert es

Windows meldet Fehler mit Zahlen aus vier verschiedenen Familien. Win32-Codes wie 5 oder 1603 liefert GetLastError zurück. HRESULT wie 0x80070005 stammen von COM, Windows Update und Installern. NTSTATUS wie 0xC0000005 kommen vom Kernel und erscheinen, wenn ein Programm beendet wird. Bug Checks wie 0xD1 gehören zu den Bluescreens. Das Tool durchsucht alle vier Familien gleichzeitig, mit den Namen und Texten, die Microsoft im Windows SDK veröffentlicht.

Viele HRESULT enthalten einen Win32-Code oder einen NTSTATUS. Hat der Wert FACILITY_WIN32, etwa 0x80070005, zeigt das Tool auch den enthaltenen Win32-Code mit seiner Beschreibung an, die den Fehler tatsächlich erklärt. Außerdem zerlegt es die Bits des Werts: den Schweregrad, die facility, die angibt, welche Komponente ihn erzeugt hat, und den Code innerhalb dieser facility.

Beispiele

0x80070005FACILITY_WIN32 (7) · 5 → ERROR_ACCESS_DENIEDEin HRESULT, das mit 0x8007 beginnt, verpackt in seinen letzten vier Stellen einen Win32-Code: 0x0005 ist die 5, Zugriff verweigert.
-10737418190xC0000005 · STATUS_ACCESS_VIOLATIONDie Ereignisanzeige und die Exitcodes von Prozessen zeigen den Wert oft als vorzeichenbehaftete Dezimalzahl. Es ist derselbe NTSTATUS einer Zugriffsverletzung.
16030x80070643 · ERROR_INSTALL_FAILUREWindows Installer endet mit 1603, wenn eine Installation fehlschlägt, und Windows Update meldet denselben Fehler als HRESULT 0x80070643.

Anwendungsfälle

  • Einen Fehler von Windows Update, des Microsoft Store oder eines Installers verstehen, bevor du nach der Lösung suchst.
  • Den Exitcode eines Prozesses oder den Wert aus der Ereignisanzeige in den Namen der Konstante übersetzen.
  • Den Bug Check eines Bluescreens anhand des Stoppcodes identifizieren.
  • Den Wert einer Konstante wie ERROR_ACCESS_DENIED oder E_INVALIDARG finden, während du gegen die Windows-API programmierst.
  • Den englischen Originaltext eines übersetzt angezeigten Fehlers sehen, um ihn in Foren und in der Dokumentation zu suchen.

Häufige Fragen

Warum erscheint dieselbe Zahl als zwei verschiedene Fehler?

Jede Familie nummeriert ihre Codes für sich. 0x7B ist der Win32-Fehler 123, ungültiger Dateiname, und zugleich der Bug Check INACCESSIBLE_BOOT_DEVICE eines Bluescreens. Der Kontext verrät, welcher gemeint ist: Stammt er von einem Bluescreen, ist es der Bug Check; hat ihn ein Programm oder ein Befehl zurückgegeben, der Win32-Code.

Wie wandelt man einen Win32-Code in ein HRESULT um?

Mit dem Makro HRESULT_FROM_WIN32: Du nimmst den Code hexadezimal und stellst 0x8007 voran, was das Fehlerbit auf 1 und die facility WIN32 auf 7 setzt. Aus 5 wird 0x80070005 und aus 1603, also 0x643, wird 0x80070643. Für den Rückweg nimmst du die letzten vier Stellen.

Warum erscheint eine negative Zahl?

Bei HRESULT und NTSTATUS für Fehler ist das höchste Bit auf 1 gesetzt, daher ergibt die Darstellung als vorzeichenbehaftete Ganzzahl eine negative Zahl. -2147024891 ist 0x80070005 und -1073741819 ist 0xC0000005. Das Tool akzeptiert beide Formen.

Warum sind manche Beschreibungen auf Englisch?

Die übersetzten Beschreibungen sind die, die Microsoft auf Microsoft Learn für die Win32-Codes veröffentlicht. Die Texte der HRESULT, der NTSTATUS und der Win32-Codes, die Learn nicht in deine Sprache übersetzt hat, werden auf Englisch angezeigt, so wie sie im Windows SDK stehen.

Was mache ich, wenn der Code nicht erscheint?

Programme können eigene Codes definieren, vor allem solche mit gesetztem Bit C oder einer facility, die nicht von Windows stammt, und diese stehen nicht im SDK. Dann lohnt sich ein Blick auf die facility, die das Tool anzeigt, um zu erfahren, welche Komponente den Fehler erzeugt hat, und den Code in der Dokumentation dieses Produkts zu suchen.