ChangerSetAccess, fonction (mcd.h)
ChangerSetAccess gère les aspects spécifiques de l’appareil d’un IRP de contrôle d’appareil avec le code IOCTL IOCTL_CHANGER_SET_ACCESS.
Syntaxe
NTSTATUS ChangerSetAccess(
[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 l’accès, ChangerSetAccess retourne la valeurXXX STATUS_ retournée par le pilote de port système ou l’une des valeurs suivantes :
STATUS_SUCCESS
STATUS_INSUFFICIENT_RESOURCES
STATUS_INVALID_PARAMETER
Si le changement ne prend pas en charge la définition de l’accès, ChangeSetAccess retourne STATUS_INVALID_DEVICE_REQUEST.
Remarques
Cette routine est requise.
ChangerSetAccess verrous ou déverrouille l’IEport, la porte ou le clavier d’un changeur, et étend ou retire un IEport.
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 ChangerSetAccess. Irp ->SystemBuffer pointe vers une structure CHANGER_SET_ACCESS en tant que paramètre d’entrée qui indique l’élément à définir et l’opération à effectuer.
ChangerSetAccess vérifie d’abord les éléments et opérations non pris en charge et retourne le code d’état approprié pour ceux qu’il ne prend pas en charge.
Ensuite, ChangerSetAccess traduit l’adresse d’élément de base zéro passée par le système à l’adresse d’élément spécifique à l’appareil requise par le changeur.
Enfin, ChangerSetAccess génère une SRB avec une CDB pour l’opération donnée sur l’élément donné et l’envoie au pilote de port système. La commande à utiliser dépend du changement. Par exemple, le pilote de miniclasse Exabyte utilise la commande SCSI PREVENT ALLOW MEDIUM REMOVAL pour verrouiller ou déverrouiller une porte de changement et MOVE MEDIUM pour étendre ou retirer un IEport.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Bureau |
d’en-tête | mcd.h (include Mcd.h, Ntddchgr.h) |
IRQL | PASSIVE_LEVEL |