Partager via


ChangerError, fonction (mcd.h)

ChangeError gère les erreurs propres à l’appareil.

Syntaxe

void ChangerError(
  PDEVICE_OBJECT      DeviceObject,
  PSCSI_REQUEST_BLOCK Srb,
  NTSTATUS            *Status,
  BOOLEAN             *Retry
);

Paramètres

DeviceObject

Pointeur vers l’objet d’appareil qui représente le changeur.

Srb

Pointeur vers le bloc de requête SCSI pour l’opération qui a échoué.

Status

Spécifie l’adresse du code STATUS_XXX défini par le système. Le pilote de miniclasse de changeur peut modifier le status ou le laisser tel qu’il est.

Retry

Pointeur vers un indicateur qui indique s’il faut réessayer la demande. Le pilote de miniclasse du changeur peut définir cet indicateur ou le laisser tel qu’il est.

Valeur de retour

None

Remarques

Cette routine est obligatoire.

Si un SRB échoue avec un status SCSI de CHECK CONDITION, le pilote de classe SCSI appelle la routine ChangerClassError du pilote de classe changeur. ChangerClassError gère les erreurs indépendamment de l’appareil et appelle la routine ChangerError du pilote de la miniclasse du changeur.

ChangeError vérifie d’abord Srb-SrbStatus> avec SRB_STATUS_AUTOSENSE_VALID pour s’assurer que la mémoire tampon de données sense est valide. Si c’est le cas, il vérifie les données de sens dans Srb-SenseInfoBuffer> pour déterminer s’il faut mettre à jour *Status avec un code STATUS_XXX plus précis et/ou définir l’indicateur Réessayer avant de revenir au pilote de classe changeur. Le nombre de nouvelles tentatives du pilote de la classe change détermine si le SRB est réellement retenté.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête mcd.h (inclure Mcd.h, Ntddchgr.h)
IRQL PASSIVE_LEVEL