Codes d'erreur Windows
Découvrez la signification d'un code d'erreur Windows : les codes Win32 de GetLastError, les HRESULT comme 0x80070005, les NTSTATUS comme 0xC0000005 et les codes d'écran bleu. L'outil accepte la valeur en hexadécimal ou en décimal, le nom symbolique ou une partie du message, et décompose le HRESULT en champs.
Exemples :

Noms et descriptions © Microsoft Corporation, tirés des fichiers d'en-tête du Windows SDK et de la documentation Microsoft Learn, publiée sous licence CC BY 4.0. Les descriptions sont affichées dans votre langue lorsque Microsoft les a traduites.Codes d'erreur système sur Microsoft Learn

Erreurs courantes

Windows Update, installations et fichiers

Programmes qui ne s'ouvrent pas ou se ferment

Écrans bleus (vérifications de bogues)

Comment ça marche

Windows signale les erreurs par des numéros de quatre familles différentes. Les codes Win32, comme 5 ou 1603, sont ceux que renvoie GetLastError. Les HRESULT, comme 0x80070005, sont ceux de COM, de Windows Update et des installateurs. Les NTSTATUS, comme 0xC0000005, proviennent du noyau et apparaissent lorsqu'un programme se ferme. Les vérifications de bogues (bug checks), comme 0xD1, sont celles des écrans bleus. L'outil recherche dans les quatre familles à la fois, avec les noms et les textes que Microsoft publie dans le Windows SDK.

De nombreux HRESULT contiennent un code Win32 ou un NTSTATUS. Lorsque la valeur a FACILITY_WIN32, comme 0x80070005, l'outil affiche aussi le code Win32 contenu et sa description, qui est celle qui explique réellement l'erreur. Il décompose en outre les bits de la valeur : la gravité, la facility qui indique quel composant l'a générée et le code au sein de cette facility.

Exemples

0x80070005FACILITY_WIN32 (7) · 5 → ERROR_ACCESS_DENIEDUn HRESULT qui commence par 0x8007 encapsule un code Win32 dans ses quatre derniers chiffres : 0x0005 correspond à 5, accès refusé.
-10737418190xC0000005 · STATUS_ACCESS_VIOLATIONL'Observateur d'événements et les codes de sortie des processus affichent souvent la valeur sous forme de décimal signé. C'est le même NTSTATUS qu'une violation d'accès.
16030x80070643 · ERROR_INSTALL_FAILUREWindows Installer se termine avec 1603 lorsqu'une installation échoue, et Windows Update signale la même erreur sous la forme du HRESULT 0x80070643.

Cas d'usage

  • Comprendre une erreur de Windows Update, du Microsoft Store ou d'un installateur avant de chercher la solution.
  • Traduire le code de sortie d'un processus ou la valeur affichée par l'Observateur d'événements en nom de constante.
  • Identifier la vérification de bogue (bug check) d'un écran bleu à partir du code d'arrêt.
  • Trouver la valeur d'une constante comme ERROR_ACCESS_DENIED ou E_INVALIDARG lors de la programmation avec l'API Windows.
  • Voir le texte original en anglais d'une erreur affichée traduite, pour la rechercher dans les forums et la documentation.

Questions fréquentes

Pourquoi le même numéro apparaît-il comme deux erreurs différentes ?

Chaque famille numérote ses codes séparément. 0x7B est l'erreur Win32 123, nom de fichier incorrect, mais aussi le bug check INACCESSIBLE_BOOT_DEVICE d'un écran bleu. Le contexte indique lequel c'est : s'il provient d'un écran bleu, c'est le bug check ; s'il a été renvoyé par un programme ou une commande, c'est le code Win32.

Comment convertir un code Win32 en HRESULT ?

Avec la macro HRESULT_FROM_WIN32 : on prend le code en hexadécimal et on le fait précéder de 0x8007, ce qui met le bit d'erreur à 1 et la facility à 7 (WIN32). Le 5 devient 0x80070005 et le 1603, qui vaut 0x643, devient 0x80070643. Pour revenir en arrière, on prend les quatre derniers chiffres.

Pourquoi un nombre négatif apparaît-il ?

Les HRESULT et les NTSTATUS d'erreur ont le bit de poids fort à 1 ; affichés comme entiers signés, ils donnent donc un nombre négatif. -2147024891 correspond à 0x80070005 et -1073741819 à 0xC0000005. L'outil accepte les deux formes.

Pourquoi certaines descriptions sont-elles en anglais ?

Les descriptions traduites sont celles que Microsoft publie sur Microsoft Learn pour les codes Win32. Les textes des HRESULT, des NTSTATUS et des codes Win32 que Learn n'a pas traduits dans votre langue sont affichés en anglais, tels qu'ils figurent dans le Windows SDK.

Que faire si le code n'apparaît pas ?

Les programmes peuvent définir leurs propres codes, surtout ceux dont le bit C est à 1 ou dont la facility n'est pas celle de Windows, et ceux-ci ne figurent pas dans le SDK. Dans ce cas, consultez la facility affichée par l'outil pour savoir quel composant a généré l'erreur et recherchez le code dans la documentation de ce produit.