ChangerSetPosition, fonction (mcd.h)
ChangerSetPosition gère les aspects spécifiques de l’appareil d’un IRP de contrôle d’appareil avec le code IOCTL IOCTL_CHANGER_SET_POSITION.
Syntaxe
NTSTATUS ChangerSetPosition(
[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 définition de la position de l’élément de transport, ChangerSetPosition retourne l’état retourné par le pilote de port système ou l’une des valeurs suivantes :
STATUS_SUCCESS
STATUS_INFO_LENGTH_MISMATCH
STATUS_INVALID_PARAMETER
STATUS_INSUFFICIENT_RESOURCES
Si le changeur ne prend pas en charge la définition de la position de l’élément de transport, ChangeSetPosition retourne STATUS_INVALID_DEVICE_REQUEST.
Remarques
Cette routine est requise.
ChangerSetPosition définit le mécanisme de transport robotisé du changeur sur la destination spécifiée, généralement pour optimiser le déplacement ou l’échange de supports en positionnant d’abord le transport.
L’indicateur CHANGER_POSITION_TO_ELEMENT dans Features0 de GET_CHANGER_PARAMETERS indique si le changement prend en charge cette fonctionnalité.
Le pilote de classe de changement vérifie la longueur de la mémoire tampon d’entrée à l’emplacement de la pile d’E/S avant d’appeler ChangerSetPosition. Irp ->SystemBuffer pointe vers une structure CHANGER_SET_POSITION en tant que paramètre d’entrée qui indique l’élément de transport et la destination à définir.
ChangerSetPosition vérifie d’abord que les adresses des éléments de transport et de destination sont valides et convertit les adresses d’élément de base zéro en adresses spécifiques à l’appareil. Il génère ensuite un SRB avec une base de données CDB pour positionner l’élément et l’envoie au pilote de port système.
ChangerSetPosition définit le champ Informations de dans le bloc d’état d’E/S sur taille de(CHANGER_SET_POSITION) 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 |