Traitement des demandes de contrôle de périphérique de bande
Tous les pilotes de miniclasse de bande doivent signaler status à l’aide des valeurs répertoriées dans l’énumérateur TAPE_STATUS. Toutefois, lorsque le pilote de classe de bande termine une demande de contrôle d’E/S, il signale status à l’aide des valeurs d’état NT équivalentes. Le tableau suivant fournit un mappage entre les valeurs TAPE_STATUS et leurs valeurs de status NT équivalentes :
Valeur d’état NT | Valeur d’état de la bande |
---|---|
STATUS_INSUFFICIENT_RESOURCES |
TAPE_STATUS_INSUFFICIENT_RESOURCES |
STATUS_NOT_IMPLEMENTED |
TAPE_STATUS_NOT_IMPLEMENTED |
STATUS_INVALID_DEVICE_REQUEST |
TAPE_STATUS_INVALID_DEVICE_REQUEST |
STATUS_INVALID_PARAMETER |
TAPE_STATUS_INVALID_PARAMETER |
STATUS_VERIFY_REQUIRED |
TAPE_STATUS_MEDIA_CHANGED |
STATUS_BUS_RESET |
TAPE_STATUS_BUS_RESET |
STATUS_SETMARK_DETECTED |
TAPE_STATUS_SETMARK_DETECTED |
STATUS_FILEMARK_DETECTED |
TAPE_STATUS_FILEMARK_DETECTED |
STATUS_BEGINNING_OF_MEDIA |
TAPE_STATUS_BEGINNING_OF_MEDIA |
STATUS_END_OF_MEDIA |
TAPE_STATUS_END_OF_MEDIA |
STATUS_BUFFER_OVERFLOW |
TAPE_STATUS_BUFFER_OVERFLOW |
STATUS_NO_DATA_DETECTED |
TAPE_STATUS_NO_DATA_DETECTED |
STATUS_EOM_OVERFLOW |
TAPE_STATUS_EOM_OVERFLOW |
STATUS_NO_MEDIA |
TAPE_STATUS_NO_MEDIA |
STATUS_IO_DEVICE_ERROR |
TAPE_STATUS_IO_DEVICE_ERROR |
STATUS_UNRECOGNIZED_MEDIA |
TAPE_STATUS_UNRECOGNIZED_MEDIA |
STATUS_DEVICE_NOT_READY |
TAPE_STATUS_DEVICE_NOT_READY |
STATUS_MEDIA_WRITE_PROTECTED |
TAPE_STATUS_MEDIA_WRITE_PROTECTED |
STATUS_DEVICE_DATA_ERROR |
TAPE_STATUS_DEVICE_DATA_ERROR |
STATUS_NO_SUCH_DEVICE |
TAPE_STATUS_NO_SUCH_DEVICE |
STATUS_INVALID_BLOCK_LENGTH |
TAPE_STATUS_INVALID_BLOCK_LENGTH |
STATUS_IO_TIMEOUT |
TAPE_STATUS_IO_TIMEOUT |
STATUS_DEVICE_NOT_CONNECTED |
TAPE_STATUS_DEVICE_NOT_CONNECTED |
STATUS_DATA_OVERRUN |
TAPE_STATUS_DATA_OVERRUN |
STATUS_DEVICE_BUSY |
TAPE_STATUS_DEVICE_BUSY |
STATUS_DEVICE_REQUIRES_CLEANING |
TAPE_STATUS_REQUIRES_CLEANING |
STATUS_CLEANER_CARTRIDGE_INSTALLED |
TAPE_STATUS_CLEANER_CARTRIDGE_INSTALLED |
Chaque fois que le pilote de classe doit appeler une routine de miniclasse plusieurs fois pour terminer une demande, le pilote de la miniclasse utilise la status de retour pour indiquer si la demande est terminée ou si la routine doit être appelée à nouveau. Le pilote de classe de bande conserve un nombre de base zéro du nombre de fois où il a appelé la routine miniclasse pour une requête donnée et passe ce nombre à la routine en tant que paramètre CallNumber .
Une routine de miniclasse retourne l’une des valeurs status suivantes pour indiquer que le pilote de classe doit appeler à nouveau la routine :
TAPE_STATUS_SEND_SRB_AND_CALLBACK
Cette valeur de retour indique au pilote de classe de bande d’envoyer le SRB à l’appareil. Une routine de miniclasse sur bande retourne généralement cette status après avoir renseigné le SRB transmis par le pilote de classe de bande. Si l’opération réussit, le pilote de classe incrémente CallNumber et appelle à nouveau la routine de la miniclasse. Si le SRB échoue, le pilote de classe appelle à nouveau la routine miniclasse en fonction de la valeur de RetryFlags.
TAPE_STATUS_CHECK_TEST_UNIT_READY
Cette valeur de retour indique au pilote de classe de bande de créer un SRB pour la commande prête pour l’unité de test et d’envoyer le SRB à l’appareil.
TAPE_STATUS_CALLBACK
Cette valeur de retour indique au pilote de classe de bande d’incrémenter CallNumber sans envoyer de SRB à l’appareil. Cela simplifie les instructions de cas qui prennent en charge plusieurs appareils. Par exemple, supposons que la plupart des périphériques de bande pris en charge par un pilote de miniclasse particulier nécessitent trois SSB pour traiter une certaine demande. Toutefois, un appareil ne nécessite que les premier et troisième SRB. Pour le périphérique unique, le pilote de miniclasse de bande peut retourner TAPE_STATUS_CALLBACK pour ignorer le deuxième SRB, ce qui permet au pilote d’utiliser le même code pour traiter la demande pour tous les appareils qu’il prend en charge.
TAPE_STATUS_REQUIRES_CLEANING
Si un périphérique à bande prend en charge la notification de nettoyage dans les données de sens plutôt que sous forme d’erreur, la routine TapeMiniGetStatus d’un pilote de miniclasse de bande retourne cette status pour indiquer au pilote de classe de bande que le lecteur doit être nettoyé.
Lorsque la routine de la mini-classe termine le traitement d’une requête (avec succès ou avec une erreur après l’épuisement des nouvelles tentatives), elle retourne au pilote de classe de bande avec un TAPE_STATUS_XXX qui indique la réussite ou l’échec de la demande.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour