Partager via


ChangerQueryVolumeTags, fonction (mcd.h)

ChangerQueryVolumeTags gère les aspects spécifiques à 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 retournée

Si le changeur prend en charge la récupération des informations de balise de volume, ChangerQueryVolumeTags retourne la valeur STATUS_XXX 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, ChangerQueryVolumeTags 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 obligatoire.

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 de balise 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 changeur prend en charge cette fonctionnalité.

Le pilote de classe de changeur 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 de 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, puis retourne STATUS_INVALID_DEVICE_REQUEST pour celles qu’il ne prend pas en charge. Ensuite, il génère un SRB avec une CDB pour indiquer l’adresse spécifique au périphérique 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 changeur SCSI, le pilote miniclass utilise la commande SCSI SEND VOLUME TAG.)

Si le premier SRB réussit, ChangerQueryVolumeTags génère un deuxième SRB avec une CDB pour transférer les résultats du SRB précédent. (Pour un changeur SCSI, le pilote miniclasse utilise la commande SCSI REQUEST VOLUME ELEMENT ADDRESS.)

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

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

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête mcd.h (inclure 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