ChangerSetAccess, fonction (mcd.h)
ChangerSetAccess gère les aspects spécifiques à 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 retournée
Si le changeur prend en charge la définition de l’accès, ChangerSetAccess renvoie la valeur STATUS_XXX 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 changeur ne prend pas en charge l’accès aux paramètres, ChangerSetAccess retourne STATUS_INVALID_DEVICE_REQUEST.
Remarques
Cette routine est obligatoire.
ChangerSetAccess verrouille ou déverrouille l’IEport, la porte ou le clavier d’un changeur, et étend ou retire un IEport.
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 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 recherche d’abord les éléments et les opérations non pris en charge, puis retourne le code status 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 en l’adresse d’élément spécifique à l’appareil requise par le changeur.
Enfin, ChangerSetAccess génère un 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 changeur. Par exemple, le pilote de miniclasse Exabyte utilise la commande SCSI PREVENT ALLOW MEDIUM REMOVAL pour verrouiller ou déverrouiller une porte de changeur et MOVE MEDIUM pour étendre ou retirer un IEport.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | mcd.h (inclure Mcd.h, Ntddchgr.h) |
IRQL | PASSIVE_LEVEL |