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 active ou désactive à son tour 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 est activée dans le Registre. L’appelant ne doit pas ouvrir l’appareil pour l’accès en lecture ou en écriture, ou l’opération IOCTL échoue. Cette 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 de l’appareil.
  2. Lorsqu’elle est appelée avec ce IOCTL, si l’indicateur pour désactiver 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 support n’est modifié que si le nombre de demandes de désactivation est égal à zéro.
Lorsque l’IRP IRP_MJ_DEVICE_CONTROL qui contient cette durée de vie cio est transmise au pilote de classe SCSI, le membre FileObject de l'IO_STACK_LOCATION actuel doit pointer vers un objet de fichier valide. Le pilote de classe SCSI nécessite un objet de fichier pour les cas où une application en mode utilisateur désactivant ou activant la lecture automatique se termine de façon inattendue. Dans ce cas, le pilote de classe SCSI utilise l’objet de fichier pour réactiver la détection des modifications de média. Étant donné que l’objet de fichier est nécessaire pour nettoyer correctement, le pilote de classe SCSI entraîne l’échec de l’IRP avec un message d’erreur de STATUS_INVALID_PARAMETER si le FileObject membre 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 enregistreurs 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, par exemple, 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 du contrôle d’appareil est routé 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 à Irp->AssociatedIrp.SystemBuffer contient une valeur booléenne, avec 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 d’état est défini sur STATUS_SUCCESS, ou éventuellement sur STATUS_BUFFER_TOO_SMALL, STATUS_INVALID_PARAMETER ou STATUS_INVALID_DEVICE_STATE.

Exigences

Exigence Valeur
d’en-tête ntddstor.h (include Ntddstor.h)

Voir aussi

IO_STACK_LOCATION