Códigos de error de Windows
Buscá qué significa un código de error de Windows: los Win32 de GetLastError, los HRESULT como 0x80070005, los NTSTATUS como 0xC0000005 y los códigos de pantalla azul. Acepta el valor en hexadecimal o en decimal, el nombre simbólico o una parte del mensaje, y separa el HRESULT en sus campos.
Ejemplos:

Nombres y descripciones © Microsoft Corporation, tomados de los archivos de encabezado del Windows SDK y de la documentación de Microsoft Learn, que se publica bajo la licencia CC BY 4.0. Las descripciones se muestran en tu idioma cuando Microsoft las tradujo.Códigos de error de sistema en Microsoft Learn

Errores frecuentes

Windows Update, instalaciones y archivos

Programas que no abren o se cierran

Pantallas azules (bug checks)

Cómo funciona

Windows informa los errores con números de cuatro familias distintas. Los códigos Win32, como 5 o 1603, son los que devuelve GetLastError. Los HRESULT, como 0x80070005, son los de COM, Windows Update y los instaladores. Los NTSTATUS, como 0xC0000005, vienen del kernel y aparecen cuando un programa se cierra. Los bug checks, como 0xD1, son los de las pantallas azules. La herramienta busca en las cuatro familias a la vez, con los nombres y textos que Microsoft publica en el Windows SDK.

Muchos HRESULT llevan adentro un código Win32 o un NTSTATUS. Cuando el valor tiene FACILITY_WIN32, como 0x80070005, la herramienta muestra también el código Win32 que contiene y su descripción, que es la que realmente explica el error. Además separa los bits del valor: la severidad, la facility que indica qué componente lo generó y el código dentro de esa facility.

Ejemplos

0x80070005FACILITY_WIN32 (7) · 5 → ERROR_ACCESS_DENIEDUn HRESULT que empieza con 0x8007 envuelve un código Win32 en sus últimos cuatro dígitos: 0x0005 es el 5, acceso denegado.
-10737418190xC0000005 · STATUS_ACCESS_VIOLATIONEl Visor de eventos y los códigos de salida de los procesos suelen mostrar el valor como decimal con signo. Es el mismo NTSTATUS de una violación de acceso.
16030x80070643 · ERROR_INSTALL_FAILUREWindows Installer termina con 1603 cuando falla una instalación, y Windows Update informa el mismo error como el HRESULT 0x80070643.

Casos de uso

  • Entender un error de Windows Update, de la Microsoft Store o de un instalador antes de buscar la solución.
  • Traducir el código de salida de un proceso o el valor que muestra el Visor de eventos al nombre de la constante.
  • Identificar el bug check de una pantalla azul a partir del código de detención.
  • Encontrar el valor de una constante como ERROR_ACCESS_DENIED o E_INVALIDARG mientras se programa contra la API de Windows.
  • Ver el texto original en inglés de un error que aparece traducido, para buscarlo en foros y en la documentación.

Preguntas frecuentes

¿Por qué el mismo número aparece como dos errores distintos?

Cada familia numera sus códigos por separado. 0x7B es el error Win32 123, nombre de archivo incorrecto, y también el bug check INACCESSIBLE_BOOT_DEVICE de una pantalla azul. El contexto indica cuál es: si salió de una pantalla azul es el bug check; si lo devolvió un programa o un comando, el Win32.

¿Cómo se convierte un código Win32 en HRESULT?

Con la macro HRESULT_FROM_WIN32: se toma el código en hexadecimal y se le antepone 0x8007, que pone en 1 el bit de error y en 7 la facility WIN32. El 5 pasa a ser 0x80070005 y el 1603, que es 0x643, pasa a ser 0x80070643. Para volver, se toman los últimos cuatro dígitos.

¿Por qué aparece un número negativo?

Los HRESULT y los NTSTATUS de error tienen el bit más alto en 1, así que al mostrarlos como entero con signo dan un número negativo. -2147024891 es 0x80070005 y -1073741819 es 0xC0000005. La herramienta acepta las dos formas.

¿Por qué algunas descripciones están en inglés?

Las descripciones traducidas son las que Microsoft publica en Microsoft Learn para los códigos Win32. Los textos de los HRESULT, de los NTSTATUS y de los códigos Win32 que Learn no tradujo a tu idioma se muestran en inglés, tal como figuran en el Windows SDK.

¿Qué hago si el código no aparece?

Los programas pueden definir sus propios códigos, sobre todo los que tienen el bit C en 1 o una facility que no es de Windows, y esos no figuran en el SDK. En ese caso conviene mirar la facility que muestra la herramienta para saber qué componente generó el error y buscar el código en la documentación de ese producto.