Définition de nouvelles valeurs NTSTATUS
Les pilotes peuvent définir des constantes IO_ERR_XXX personnalisées à utiliser comme valeurs ErrorCode lors de la journalisation des erreurs. Les paires de pilotes écrites ensemble peuvent également définir des valeurs STATUS_XXX personnalisées pour les requêtes IRP_MJ_INTERNAL_DEVICE_CONTROL .
Le diagramme suivant montre les champs de bits dans une valeur NTSTATUS 32 bits.
Le champ Sev indiqué dans le diagramme précédent indique le code de gravité, qui doit être l’une des valeurs définies par le système suivantes :
STATUS_SEVERITY_SUCCESS
Indique une valeur NTSTATUS réussie, telle que STATUS_SUCCESS, ou la valeur IO_ERR_RETRY_SUCCEEDED dans les paquets du journal des erreurs.
STATUS_SEVERITY_INFORMATIONAL
Indique une valeur NTSTATUS d’information, telle que STATUS_SERIAL_MORE_WRITES.
STATUS_SEVERITY_WARNING
Indique une valeur NTSTATUS d’avertissement, telle que STATUS_DEVICE_PAPER_EMPTY.
STATUS_SEVERITY_ERROR
Indique une valeur NTSTATUS d’erreur, telle que STATUS_INSUFFICIENT_RESOURCES pour une valeur FinalStatus ou IO_ERR_CONFIGURATION_ERROR pour une valeur ErrorCode dans les paquets du journal des erreurs.
La plupart des constantes IO_ERR_XXX publiques appartiennent à la catégorie STATUS_SEVERITY_ERROR.
Le code Facility spécifie l’installation qui a généré l’erreur. Pour les nouvelles valeurs IO_ERR_XXX , les pilotes spécifient la valeur FACILITY_IO_ERROR_CODE pour Facility. Pour les valeurs personnalisées STATUS_XXX , la signification des différentes valeurs pour Facility est définie par le pilote.
Le bit C spécifie si la valeur est définie par le client ou définie par Microsoft. Le bit est défini pour les valeurs définies par le client et effacé pour les valeurs définies par Microsoft.
Les pilotes peuvent définir de nouvelles valeurs IO_ERR_XXX pour identifier les messages d’erreur personnalisés dans le journal des événements système. Pour obtenir une description de la définition des valeurs NTSTATUS et des messages d’erreur qu’elles identifient, consultez Définition de types d’erreur personnalisés.
Les paires de pilotes peuvent définir des valeurs STATUS_XXX spécifiques au pilote pour communiquer des informations sur les requêtes IRP_MJ_INTERNAL_DEVICE_CONTROL définies en privé du pilote inférieur au pilote supérieur de la paire.
Le pilote de classe doit mapper toute valeur privée STATUS_XXX à une valeur NTSTATUS définie par le système lorsqu’il termine une IRP si une routine IoCompletion de niveau supérieur existante peut être appelée pour cette IRP.
Pour les pilotes d’affichage et de miniport vidéo jumelés, le pilote de port vidéo effectue le mappage entre les valeurs publiques STATUS_XXX et les constantes définies par Win32 retournées par les pilotes de miniport vidéo. Pour plus d’informations, consultez Pilotes vidéo miniport dans le modèle de pilote d’affichage Windows 2000.
Les pilotes ne peuvent pas utiliser de valeurs NTSTATUS personnalisées pour les irps qui peuvent être reçus en mode utilisateur, car seules les valeurs définies par le système peuvent être traduites en codes d’erreur Win32.