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 état 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 minitape spécifique au pilote. Il s’agit NULL si le pilote de miniclasse n’a pas demandé d’extension de minitape lorsqu’il a initialisé.

[in] Srb

Pointeur vers la 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 miniclasse de bande peut modifier le TAPE_STATUS ou le laisser inchangé.

Valeur de retour

Aucun

Remarques

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

Toutefois, pour certains appareils, un pilote 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, le pilote miniclasse de bande peut être en mesure de déterminer que le problème réel est plus précisément représenté 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 de TAPE_ERROR_ROUTINE dans la structure TAPE_INIT_DATA_EX qu’il passe à TapeClassInitialize de sa routine DriverEntry. Pour un pilote de miniclasse de ce type, lorsqu’une erreur se produit pendant une commande de lecture, d’écriture ou de contrôle de périphérique, le pilote de classe de bande définit un code TAPE_STATUS approprié et appelle la routine de TAPE_ERROR_ROUTINE du pilote 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 l’état 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 >SrbStatus, le SRB contient des informations de sens SCSI à SenseInfoBuffer. La longueur de la mémoire tampon est SenseInfoBufferLength. La routine TAPE_ERROR_ROUTINE doit examiner ces informations avec le SrbStatus et ScsiStatus dans la SRB pour déterminer s’il faut modifier le TAPE_STATUS retourné.

Exigences

Exigence Valeur
plateforme cible Bureau
d’en-tête minitape.h (include Minitape.h)

Voir aussi

DriverEntry of Tape Miniclass Driver

SCSI_REQUEST_BLOCK

TAPE_INIT_DATA_EX

TAPE_STATUS

TapeClassInitialize