Structure des codes d’erreur COM
L’illustration suivante montre le format d’un HRESULT (ou SCODE); les nombres indiquent des positions de bits :

Le bit de poids fort dans HRESULT ou SCODE indique si la valeur de retour représente une réussite ou un échec. Si la valeur est 0, le niveau de gravité est _ réussite, la valeur indique réussite. Si la valeur est 1, _ erreur de gravité, elle indique un échec.
Les bits R, C, N et r sont réservés.
Le champ installation indique le service système responsable de l’erreur. Microsoft alloue de nouveaux codes d’installation à mesure qu’ils sont nécessaires. La plupart des valeurs SCODEs et HRESULT définissent le champ Facility sur Facility _ ITF, indiquant une erreur de méthode d’interface.
Les champs d’installation courants sont décrits dans le tableau suivant.
| Champ d’installation | Valeur | Description |
|---|---|---|
| répartition des installations _ |
2 |
Pour les erreurs d’interface IDispatch à liaison tardive. |
| ITF de l’installation _ |
4 |
Pour la plupart des codes d’État retournés par les méthodes d’interface. La signification réelle de l’erreur est définie par l’interface. Autrement dit, deux valeurs HRESULT avec exactement la même valeur 32 bits retournée par deux interfaces différentes peuvent avoir des significations différentes. |
| NULL d’installation _ |
0 |
Pour les codes d’État communs largement applicables tels que S _ OK. |
| RPC de l’installation _ |
1 |
Pour les codes d’État retournés par les appels de procédure distante. |
| stockage des installations _ |
3 |
Pour les codes d’État renvoyés par les appels de méthode IStorage ou IStream relatifs au stockage structuré. Les codes d’État dont la valeur code (16 bits inférieurs) se trouvent dans la plage de codes d’erreur MS-DOS (autrement dit, inférieure à 256) ont la même signification que l’erreur MS-DOS correspondante. |
| INSTALLATION de _ Win32 |
7 |
utilisé pour fournir un moyen de gérer les codes d’erreur des fonctions dans l’API Windows en tant que HRESULT. Les codes d’erreur dans OLE 16 bits qui dupliquaient les codes d’erreur système ont également été modifiés pour installer _ Win32. |
| fenêtres d’installation _ |
8 |
Utilisé pour les codes d’erreur supplémentaires des interfaces définies par Microsoft. |
Le champ de code est un numéro unique qui est assigné pour représenter l’erreur ou l’avertissement.
Par Convention, les valeurs HRESULT ont généralement des noms au format suivant : raison de la gravité de l' installation _ _ .
La fonction est soit le nom de la fonction, soit un autre identificateur distinctif ; La gravité est une seule lettre, S ou E, qui indique si l’appel de fonction a réussi ou a généré une erreur (E). et reason est un identificateur qui décrit la signification du code. Par exemple, le code d’État STG _ E _ FILENOTFOUND indique qu’une erreur liée au stockage s’est produite ; plus précisément, un fichier demandé n’existe pas. Codes d’état de _ la fonction null omettre le préfixe de l' installation _ .
Les codes d’erreur sont définis dans le contexte d’une implémentation d’interface. Une fois définis, les codes de réussite ne peuvent pas être modifiés ou de nouveaux codes de réussite ont été ajoutés. Toutefois, de nouveaux codes d’échec peuvent être écrits. Microsoft se réserve le droit de définir de nouveaux codes d’échec (mais pas des codes de réussite) pour les interfaces décrites dans _ ITF ou dans les nouvelles installations.