Partager via


ChangerSetPosition, fonction (mcd.h)

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

Si le changeur prend en charge la définition de la position de l’élément de transport, ChangerSetPosition retourne la status retournée 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, ChangerSetPosition retourne STATUS_INVALID_DEVICE_REQUEST.

Remarques

Cette routine est obligatoire.

ChangerSetPosition définit le mécanisme de transport robotique du changeur sur la destination spécifiée, généralement pour optimiser le déplacement ou l’échange de média en positionnant d’abord le transport.

L’indicateur CHANGER_POSITION_TO_ELEMENT dans Features0 de GET_CHANGER_PARAMETERS indique si le changeur prend en charge cette fonctionnalité.

Le pilote de classe de changeur vérifie la longueur de la mémoire tampon d’entrée dans 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 d’éléments de transport et de destination sont valides et convertit les adresses d’éléments de base zéro en adresses spécifiques à l’appareil. Il génère ensuite un SRB avec une CDB pour positionner l’élément et l’envoie au pilote de port système.

ChangerSetPosition définit le champ Information dans le bloc d’E/S status sur sizeof(CHANGER_SET_POSITION) avant de revenir au pilote de classe changer.

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

, IOCTL_CHANGER_SET_POSITION

CHANGER_ELEMENT

CHANGER_SET_POSITION