Partager via


IOCTL_STORAGE_MCN_CONTROL IOCTL (ntddstor.h)

Active ou désactive temporairement la remise des événements PnP personnalisés GUID_IO_MEDIA_ARRIVAL et GUID_IO_MEDIA_REMOVAL sur un appareil multimédia amovible. Cela, à son tour, active ou désactive la détection des modifications multimédias (lecture automatique) pour l’appareil si l’appelant a ouvert l’appareil avec FILE_READ_ATTRIBUTES accès et si la lecture automatique de l’appareil est activée dans le Registre. L’appelant ne doit pas ouvrir l’appareil pour un accès en lecture ou en écriture, sinon l’opération IOCTL échoue. Cette durée de vie IOCTL n’a aucun effet sur le paramètre de lecture automatique dans le Registre.

Un pilote pour un tel périphérique multimédia amovible doit effectuer les opérations suivantes :

  1. Conservez le nombre de demandes de désactivation, par appareil physique, dans l’extension de l’objet appareil.
  2. En cas d’appel avec ce IOCTL, si l’indicateur de désactivation de la détection des modifications multimédias est défini, incrémentez le nombre ; si l’indicateur est clair, décrémentez le nombre.
  3. Définissez l’événement de modification du média pour l’appareil lorsque l’état du média est modifié uniquement si le nombre de demandes de désactivation est égal à zéro.
Lorsque le IRP_MJ_DEVICE_CONTROL IRP qui contient ce IOCTL est passé au pilote de classe SCSI, le membre FileObject du IO_STACK_LOCATION actuel doit pointer vers un objet de fichier valide. Le pilote de classe SCSI nécessite un objet file pour les cas où une application en mode utilisateur qui désactive ou active la lecture automatique se termine de manière inattendue. Dans ce cas, le pilote de classe SCSI utilise l’objet file pour réactiver la détection des modifications de média. Étant donné que l’objet fichier est nécessaire pour une propre appropriée, le pilote de classe SCSI entraîne l’échec de l’IRP avec un message d’erreur STATUS_INVALID_PARAMETER si le membre FileObject de IO_STACK_LOCATION ne pointe pas vers un objet de fichier valide. Si une application en mode utilisateur ouvre l’appareil, le gestionnaire d’E/S initialise ce membre, mais les rédacteurs de pilotes en mode noyau ne doivent pas supposer que FileObject sera correctement initialisé lorsque l’IRP est généré par une application en mode utilisateur. Si, pour instance, une application en mode utilisateur ouvre par erreur l’appareil pour l’accès en lecture ou en écriture avant d’envoyer le IOCTL, l’IRP de contrôle de l’appareil est acheminé via le système de fichiers, empêchant le pilote de classe SCSI et le pilote de périphérique d’accéder directement à l’objet de fichier de l’appareil.

Code principal

IRP_MJ_DEVICE_CONTROL

Mémoire tampon d'entrée

La mémoire tampon dans Irp-AssociatedIrp.SystemBuffer> contient une valeur booléenne, true indiquant que le pilote doit désactiver la détection des modifications multimédias.

Longueur de la mémoire tampon d’entrée

Longueur d’un booléen.

Mémoire tampon de sortie

Aucun.

Longueur de la mémoire tampon de sortie

Aucun.

Bloc d’état

Le champ Informations est défini sur zéro. Le champ État est défini sur STATUS_SUCCESS, ou éventuellement sur STATUS_BUFFER_TOO_SMALL, STATUS_INVALID_PARAMETER ou STATUS_INVALID_DEVICE_STATE.

Configuration requise

Condition requise Valeur
En-tête ntddstor.h (inclure Ntddstor.h)

Voir aussi

IO_STACK_LOCATION