Nomes e descrições © Microsoft Corporation, extraídos dos arquivos de cabeçalho do Windows SDK e da documentação do Microsoft Learn, publicada sob a licença CC BY 4.0. As descrições são exibidas no seu idioma quando a Microsoft as traduziu.Códigos de erro do sistema no Microsoft Learn
Erros comuns
Windows Update, instalações e arquivos
Programas que não abrem ou que fecham sozinhos
Telas azuis (verificações de bug)
Como funciona
O Windows informa os erros com números de quatro famílias diferentes. Os códigos Win32, como 5 ou 1603, são os que o GetLastError retorna. Os HRESULT, como 0x80070005, são os do COM, do Windows Update e dos instaladores. Os NTSTATUS, como 0xC0000005, vêm do kernel e aparecem quando um programa é encerrado. As verificações de bug (bug checks), como 0xD1, são as das telas azuis. A ferramenta pesquisa nas quatro famílias ao mesmo tempo, com os nomes e textos que a Microsoft publica no Windows SDK.
Muitos HRESULT carregam dentro um código Win32 ou um NTSTATUS. Quando o valor tem FACILITY_WIN32, como 0x80070005, a ferramenta mostra também o código Win32 contido e sua descrição, que é a que realmente explica o erro. Ela também separa os bits do valor: a gravidade, a facility que indica qual componente o gerou e o código dentro dessa facility.
Exemplos
0x80070005FACILITY_WIN32 (7) · 5 → ERROR_ACCESS_DENIEDUm HRESULT que começa com 0x8007 envolve um código Win32 nos quatro últimos dígitos: 0x0005 é o 5, acesso negado.-10737418190xC0000005 · STATUS_ACCESS_VIOLATIONO Visualizador de Eventos e os códigos de saída dos processos costumam mostrar o valor como decimal com sinal. É o mesmo NTSTATUS de uma violação de acesso.16030x80070643 · ERROR_INSTALL_FAILUREO Windows Installer termina com 1603 quando uma instalação falha, e o Windows Update informa o mesmo erro como o HRESULT 0x80070643.Casos de uso
- Entender um erro do Windows Update, da Microsoft Store ou de um instalador antes de procurar a solução.
- Traduzir o código de saída de um processo ou o valor exibido pelo Visualizador de Eventos para o nome da constante.
- Identificar a verificação de bug (bug check) de uma tela azul a partir do código de parada.
- Encontrar o valor de uma constante como ERROR_ACCESS_DENIED ou E_INVALIDARG ao programar com a API do Windows.
- Ver o texto original em inglês de um erro exibido traduzido, para pesquisá-lo em fóruns e na documentação.
Perguntas frequentes
Por que o mesmo número aparece como dois erros diferentes?
Cada família numera seus códigos separadamente. 0x7B é o erro Win32 123, nome de arquivo incorreto, e também o bug check INACCESSIBLE_BOOT_DEVICE de uma tela azul. O contexto indica qual é: se veio de uma tela azul, é o bug check; se foi retornado por um programa ou comando, é o Win32.
Como converter um código Win32 em HRESULT?
Com a macro HRESULT_FROM_WIN32: pega-se o código em hexadecimal e coloca-se 0x8007 na frente, o que define o bit de erro como 1 e a facility como 7 (WIN32). O 5 vira 0x80070005 e o 1603, que é 0x643, vira 0x80070643. Para voltar, pegam-se os quatro últimos dígitos.
Por que aparece um número negativo?
Os HRESULT e NTSTATUS de erro têm o bit mais alto em 1; por isso, ao exibi-los como inteiro com sinal, resultam em um número negativo. -2147024891 é 0x80070005 e -1073741819 é 0xC0000005. A ferramenta aceita as duas formas.
Por que algumas descrições estão em inglês?
As descrições traduzidas são as que a Microsoft publica no Microsoft Learn para os códigos Win32. Os textos dos HRESULT, dos NTSTATUS e dos códigos Win32 que o Learn não traduziu para o seu idioma são exibidos em inglês, como constam no Windows SDK.
O que fazer se o código não aparece?
Os programas podem definir seus próprios códigos, principalmente os que têm o bit C em 1 ou uma facility que não é do Windows, e esses não constam no SDK. Nesse caso, convém olhar a facility exibida pela ferramenta para saber qual componente gerou o erro e procurar o código na documentação desse produto.