Partager via


TAPE_ERROR_ROUTINE fonction de rappel (minitape.h)

TAPE_ERROR_ROUTINE fournit une gestion des erreurs spécifique à l’appareil lorsqu’un SRB est terminé avec un status d’erreur. Cette routine est facultative.

Syntaxe

TAPE_ERROR_ROUTINE TapeErrorRoutine;

void TapeErrorRoutine(
  [in]      PVOID MinitapeExtension,
  [in]      PSCSI_REQUEST_BLOCK Srb,
  [in, out] PTAPE_STATUS TapeStatus
)
{...}

Paramètres

[in] MinitapeExtension

Pointeur vers l’extension de mini-bande spécifique au pilote. Cette valeur est NULL si le pilote de la mini-classe n’a pas demandé d’extension de minitape lors de son initialisation.

[in] Srb

Pointeur vers le SRB pour l’opération qui a échoué.

[in, out] TapeStatus

Pointeur vers le TAPE_STATUS défini par le pilote de classe de bande. Le pilote de miniclasse de bande peut modifier le TAPE_STATUS ou le laisser inchangé.

Valeur de retour

None

Remarques

La plupart des pilotes de miniclasse de bande ne fournissent pas de routine TAPE_ERROR_ROUTINE , car les codes TAPE_STATUS définis par le pilote de classe de bande sont appropriés.

Toutefois, pour certains appareils, un pilote de miniclasse de bande peut identifier un code d’erreur plus approprié que le pilote de classe de bande. Par exemple, si le pilote de classe de bande retourne TAPE_STATUS_BUS_RESET, il peut être en mesure de déterminer que le problème réel est représenté plus précisément par TAPE_STATUS_NO_MEDIA pour certains appareils.

Un pilote de miniclasse de bande spécifie éventuellement un point d’entrée pour sa routine TAPE_ERROR_ROUTINE dans la structure TAPE_INIT_DATA_EX qu’il transmet à TapeClassInitialize à partir de sa routine DriverEntry . Pour un tel pilote de miniclasse, lorsqu’une erreur se produit lors d’une commande de lecture, d’écriture ou de contrôle de périphérique, le pilote de classe de bande définit un code de TAPE_STATUS approprié et appelle la routine de TAPE_ERROR_ROUTINE du pilote de la miniclasse avec l’extension minitape, le SRB ayant échoué et le code TAPE_STATUS qui serait retourné.

TAPE_ERROR_ROUTINE détermine s’il faut modifier le status fourni par le pilote de classe de bande en fonction des paramètres d’entrée et de sa connaissance de l’appareil. Si le bit SRB_STATUS_AUTOSENSE_VALID est défini dans Srb-SrbStatus>, le SRB contient des informations de sens SCSI sur SenseInfoBuffer. La longueur de la mémoire tampon est SenseInfoBufferLength. La routine TAPE_ERROR_ROUTINE doit examiner ces informations avec SrbStatus et ScsiStatus dans le SRB pour déterminer s’il faut modifier le TAPE_STATUS retourné.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête minitape.h (inclure Minitape.h)

Voir aussi

DriverEntry of Tape Miniclass Driver

SCSI_REQUEST_BLOCK

TAPE_INIT_DATA_EX

TAPE_STATUS

TapeClassInitialize