Kody błędów systemu Windows
Sprawdź, co oznacza kod błędu systemu Windows: kody Win32 z GetLastError, HRESULT, takie jak 0x80070005, NTSTATUS, takie jak 0xC0000005, oraz kody niebieskiego ekranu. Narzędzie przyjmuje wartość szesnastkowo lub dziesiętnie, nazwę symboliczną albo fragment komunikatu i rozbija HRESULT na pola.
Przykłady:

Nazwy i opisy © Microsoft Corporation, pochodzące z plików nagłówkowych Windows SDK oraz z dokumentacji Microsoft Learn, publikowanej na licencji CC BY 4.0. Opisy są wyświetlane w Twoim języku, jeśli Microsoft je przetłumaczył.Kody błędów systemowych w Microsoft Learn

Częste błędy

Windows Update, instalacje i pliki

Programy, które się nie otwierają lub zamykają

Niebieskie ekrany (bug checks)

Jak to działa

System Windows zgłasza błędy za pomocą liczb z czterech różnych rodzin. Kody Win32, takie jak 5 lub 1603, to te, które zwraca GetLastError. HRESULT, takie jak 0x80070005, pochodzą z COM, Windows Update i instalatorów. NTSTATUS, takie jak 0xC0000005, pochodzą z jądra i pojawiają się, gdy program się zamyka. Bug checks, takie jak 0xD1, to kody niebieskich ekranów. Narzędzie przeszukuje jednocześnie wszystkie cztery rodziny, z nazwami i tekstami, które Microsoft publikuje w Windows SDK.

Wiele HRESULT zawiera w sobie kod Win32 lub NTSTATUS. Gdy wartość ma FACILITY_WIN32, jak 0x80070005, narzędzie pokazuje także zawarty w niej kod Win32 i jego opis, który naprawdę wyjaśnia błąd. Rozdziela też bity wartości: ważność, facility wskazujące, który składnik go wygenerował, oraz kod w obrębie tej facility.

Przykłady

0x80070005FACILITY_WIN32 (7) · 5 → ERROR_ACCESS_DENIEDHRESULT zaczynający się od 0x8007 zawiera kod Win32 w ostatnich czterech cyfrach: 0x0005 to 5, odmowa dostępu.
-10737418190xC0000005 · STATUS_ACCESS_VIOLATIONPodgląd zdarzeń i kody zakończenia procesów często pokazują wartość jako liczbę dziesiętną ze znakiem. To ten sam NTSTATUS naruszenia dostępu.
16030x80070643 · ERROR_INSTALL_FAILUREWindows Installer kończy działanie kodem 1603, gdy instalacja się nie powiedzie, a Windows Update zgłasza ten sam błąd jako HRESULT 0x80070643.

Przypadki użycia

  • Zrozumieć błąd Windows Update, Microsoft Store lub instalatora, zanim zaczniesz szukać rozwiązania.
  • Zamienić kod zakończenia procesu lub wartość z Podglądu zdarzeń na nazwę stałej.
  • Zidentyfikować bug check niebieskiego ekranu na podstawie kodu zatrzymania.
  • Znaleźć wartość stałej, takiej jak ERROR_ACCESS_DENIED lub E_INVALIDARG, podczas programowania z użyciem interfejsu API systemu Windows.
  • Zobaczyć oryginalny angielski tekst błędu wyświetlanego w tłumaczeniu, aby wyszukać go na forach i w dokumentacji.

Najczęstsze pytania

Dlaczego ta sama liczba pojawia się jako dwa różne błędy?

Każda rodzina numeruje swoje kody osobno. 0x7B to błąd Win32 123, niepoprawna nazwa pliku, a także bug check INACCESSIBLE_BOOT_DEVICE niebieskiego ekranu. O tym, który to jest, decyduje kontekst: jeśli pochodzi z niebieskiego ekranu, to bug check; jeśli zwrócił go program lub polecenie, to kod Win32.

Jak zamienić kod Win32 na HRESULT?

Za pomocą makra HRESULT_FROM_WIN32: bierzesz kod szesnastkowo i dopisujesz z przodu 0x8007, co ustawia bit błędu na 1 i facility WIN32 na 7. Z 5 robi się 0x80070005, a z 1603, czyli 0x643, robi się 0x80070643. Aby wrócić, bierzesz ostatnie cztery cyfry.

Dlaczego pojawia się liczba ujemna?

HRESULT i NTSTATUS będące błędami mają najwyższy bit ustawiony na 1, więc po wyświetleniu jako liczba całkowita ze znakiem dają liczbę ujemną. -2147024891 to 0x80070005, a -1073741819 to 0xC0000005. Narzędzie przyjmuje obie postacie.

Dlaczego niektóre opisy są po angielsku?

Przetłumaczone opisy to te, które Microsoft publikuje w Microsoft Learn dla kodów Win32. Teksty HRESULT, NTSTATUS oraz kodów Win32, których Learn nie przetłumaczył na Twój język, są wyświetlane po angielsku, tak jak występują w Windows SDK.

Co zrobić, jeśli kodu nie ma na liście?

Programy mogą definiować własne kody, zwłaszcza te z bitem C ustawionym na 1 lub z facility, które nie pochodzi z systemu Windows, a takich kodów nie ma w SDK. W takim przypadku warto sprawdzić facility pokazane przez narzędzie, aby dowiedzieć się, który składnik wygenerował błąd, i poszukać kodu w dokumentacji tego produktu.