Partager via


ChangerQueryVolumeTags, fonction (mcd.h)

ChangerQueryVolumeTags gère les aspects spécifiques de l’appareil d’un IRP de contrôle d’appareil avec le code IOCTL de IOCTL_CHANGER_QUERY_VOLUME_TAGS.

Syntaxe

NTSTATUS ChangerQueryVolumeTags(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] PIRP           Irp
);

Paramètres

[in] DeviceObject

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

[in] Irp

Pointeur vers l’IRP.

Valeur de retour

Si le changeur prend en charge la récupération des informations d’étiquette de volume, ChangerQueryVolumeTags retourne la valeurXXX STATUS_ retournée par le pilote de port système, ou l’une des valeurs suivantes :

STATUS_SUCCESS

STATUS_INVALID_ELEMENT_ADDRESS

STATUS_INSUFFICIENT_RESOURCES

Si le changeur ne prend pas en charge la récupération des informations de balise de volume, ChangeQueryVolumeTags retourne STATUS_INVALID_DEVICE_REQUEST.

Remarques

Cette routine combine les fonctionnalités de deux commandes SCSI : SEND VOLUME TAGS et REQUEST VOLUME ELEMENT ADDRESS. Cette routine est requise.

ChangerQueryVolumeTags récupère les informations de balise de volume pour les éléments spécifiés. Il peut également être utilisé pour définir ou effacer les informations d’étiquette de volume si le changeur prend en charge ces opérations. L’indicateur CHANGER_VOLUME_IDENTIFICATION dans le membre Features0 de la structure GET_CHANGER_PARAMETERS indique si le changement prend en charge cette fonctionnalité.

Le pilote de classe de changement vérifie les longueurs de mémoire tampon d’entrée et de sortie dans l’emplacement de la pile d’E/S avant d’appeler ChangerQueryVolumeTags. Irp->SystemBuffer pointe vers une structure CHANGER_SEND_VOLUME_TAG_INFORMATION qui indique les éléments, l’opération à effectuer et un modèle qui spécifie l’ID de volume à rechercher ou à définir.

ChangerQueryVolumeTags vérifie d’abord le code d’action pour les opérations non prises en charge et retourne STATUS_INVALID_DEVICE_REQUEST pour ceux qu’il ne prend pas en charge. Ensuite, il génère une SRB avec une base de données CDB pour indiquer l’adresse spécifique à l’appareil de l’élément de départ et l’envoie au pilote de port système, en passant le modèle d’ID de volume en tant que paramètre. (Pour un changement SCSI, le pilote miniclasse utilise la commande SCSI SEND VOLUME TAG.)

Si la première SRB réussit, ChangerQueryVolumeTags génère une deuxième SRB avec une CDB pour transférer les résultats de la SRB précédente. (Pour un changement SCSI, le pilote miniclasse utilise l’ADRESSE DE L’ÉLÉMENT VOLUME DE REQUÊTE DE COMMANDE SCSI.)

ChangerQueryVolumeTags renseigne ensuite une structure de READ_ELEMENT_ADDRESS_INFO à Irp ->AssociatedIrp.SystemBuffer qui indique le nombre d’éléments pour lesquels les informations de balise de volume ont été transférées et les informations de chaque élément.

Après avoir renseigné la mémoire tampon système, ChangerQueryVolumeTags définit le champ Information dans le bloc d’état d’E/S sur le nombre d’octets écrits dans la mémoire tampon avant de revenir au pilote de classe de changement.

Exigences

Exigence Valeur
plateforme cible Bureau
d’en-tête mcd.h (include Mcd.h, Ntddchgr.h)
IRQL PASSIVE_LEVEL

Voir aussi

, GET_CHANGER_PARAMETERS

CHANGER_ELEMENT

CHANGER_ELEMENT_STATUS

CHANGER_SEND_VOLUME_TAG_INFORMATION

ChangerGetElementStatus

READ_ELEMENT_ADDRESS_INFO