Présentation des informations d’erreur étendues
Les informations d’erreur étendues sont un tableau d’enregistrements, chacun indiquant le passage du code d’erreur par le biais d’une couche particulière dans le système ou l’application. Si une erreur se produit sur une machine C, comme elle est appelée à partir de l’ordinateur B, qui à son tour est appelé à partir de l’ordinateur A, le temps d’exécution RPC sur l’ordinateur C génère un ou plusieurs enregistrements décrivant l’erreur et les transmet à l’ordinateur B. L’ordinateur B peut ajouter un ou plusieurs enregistrements au début de la chaîne existante, et passe la chaîne complète à A. Un peut ajouter un ou plusieurs enregistrements et afficher ou consigner les informations. Essentiellement, la chaîne d’erreurs étendue représente l’historique de l’erreur.
Les informations d’erreur étendues ne remplacent pas le code d’erreur (le code status RPC_S_*). Quelle que soit la quantité ou la quantité d’informations d’erreur étendues générées, le code d’erreur reste inchangé.
Chaque enregistrement d’informations d’erreur étendu contient les éléments suivants. Pour plus d’informations, consultez RPC_EXTENDED_ERROR_INFO :
ComputerName : il s’agit du nom DNS non qualifié de l’ordinateur sur lequel l’erreur est née. Seuls les enregistrements sur les limites de la machine disposent de ces informations. Par exemple, dans le scénario décrit précédemment avec les machines A, B et C, le ComputerName est défini pour les champs suivants :
Enregistrement Champ ComputerName Enregistrement #1 généré par l’ordinateur C - Enregistrement #2 généré par l’ordinateur C - Enregistrement #3 généré par l’ordinateur C C Enregistrement #1 généré par l’ordinateur B - Enregistrement n°2 généré par l’ordinateur B - Enregistrement n°3 généré par l’ordinateur B B Enregistrement n°1 généré par l’ordinateur A - Enregistrement n°2 généré par l’ordinateur A - Enregistrement n°3 généré par l’ordinateur A - Chef de chaîne
ProcessID : identificateur du processus qui a généré l’erreur.
TimeStamp : heure à laquelle l’erreur s’est produite, exprimée au format UTC.
Génération de composant : définition de code entier du composant logique qui a généré l’erreur. Les composants suivants sont actuellement définis :
Code Nom Description 1 Application Composant propriétaire de la routine du gestionnaire pour l’appel RPC particulier 2 Runtime Heure d’exécution RPC 3 Fournisseur de sécurité Fournisseur de sécurité pour cet appel. 4 NPFS Système de fichiers NPFS 5 RDR Redirecteur 6 NMP Système de canal nommé. Il peut s’agir de NPFS ou de RDR, mais dans de nombreux cas, le temps d’exécution RPC ne sait pas qui a effectué l’opération demandée, et dans ce cas, NMP est retourné. 7 IO Système d’E/S ou pilote utilisé par le système d’E/S. Il peut s’agir de NPFS, RDR ou d’un fournisseur Winsock. 8 Winsock Fournisseur Winsock 9 Code d’authz API d’autorisation. 10 LPC Fonctionnalité d’appel de procédure locale.
- État : code d’erreur généré ou retourné par la couche
- DetectionLocation : numéro unique identifiant l’emplacement du code où l’erreur a été détectée. Ce champ est lié au code et passe de la version à la version. Une liste distincte des emplacements de détection les plus fréquemment rencontrés sera publiée.
- Indicateurs : indicateurs spécifiant des informations sur l’enregistrement. Les indicateurs actuellement définis sont EEInfoPreviousRecordsMissing et EEInfoNextRecordsMissing, correspondant respectivement aux valeurs numériques 1 et 2. Si EEInfoPreviousRecordsMissing est défini, un ou plusieurs enregistrements avant cet enregistrement sont manquants. Si EEInfoNextRecordsMissing est défini, un ou plusieurs enregistrements après cet enregistrement sont manquants. Pour obtenir une description de la raison pour laquelle des enregistrements peuvent être manquants, consultez Fiabilité des informations d’erreur étendues.
- Jusqu’à quatre paramètres d’erreur. Un paramètre d’erreur est une structure de variante légère qui fournit des informations supplémentaires sur l’erreur. Les informations supplémentaires dépendent de l’erreur et de l’emplacement de détection. Les paramètres peuvent être de type CHAÎNE ANSI (LPSTR), Chaîne Unicode (LPWSTR), valeur longue (long), valeur courte (short), pointeur (int64) ou aucun.