Partager via


IOCTL_STORAGE_EJECTION_CONTROL IOCTL (ntddstor.h)

Verrouille l’appareil pour empêcher la suppression du média. Si le pilote peut empêcher la suppression du média pendant que le lecteur est en cours d’utilisation, le pilote désactive ou active le mécanisme qui éjecte le média, verrouillant ainsi le lecteur. Un appelant doit ouvrir l’appareil avec FILE_READ_ATTRIBUTES pour envoyer cette demande.

Contrairement à IOCTL_STORAGE_MEDIA_REMOVAL, le pilote suit IOCTL_STORAGE_EJECTION_CONTROL demandes par appelant et ignore les demandes de déverrouillage pour lesquelles il n’a pas reçu de demande de verrouillage du même appelant, empêchant ainsi d’autres appelants de déverrouiller le lecteur.

Un pilote pour un périphérique multimédia amovible peut prendre en charge cette IOCTL doit effectuer les opérations suivantes :

  1. Conservez un nombre de verrous, marqué par l’appelant, dans l’extension d’objet de l’appareil.
  2. Conservez le nombre de verrous par appareil physique.
  3. Lorsqu’il est appelé avec ce IOCTL, si l’indicateur pour empêcher la suppression du média est défini, incrémentez le nombre ; si l’indicateur est clair et que le pilote a déjà reçu une demande de verrouillage du même appelant, décrémentez le nombre.
  4. Empêcher la suppression du média, sauf si tous les nombres de verrous sont nuls.
Dans des circonstances normales, l’appelant qui a verrouillé l’appareil à l’aide de IOCTL_STORAGE_EJECTION_CONTROL, déverrouille l’appareil en envoyant IOCTL_STORAGE_EJECTION_CONTROL à nouveau avec Irp->AssociatedIrp.SystemBuffer défini sur une valeur booléenne de FALSE. Toutefois, parfois, l’appelant ne parvient pas à déverrouiller l’appareil correctement.

Pour vous assurer que les verrous de suppression de média sont correctement libérés, le pilote de classe effectue le suivi des appelants qui verrouillent le média avec IOCTL_STORAGE_EJECTION_CONTROL. Si l’appelant se termine sans déverrouiller l’appareil, le pilote de classe déverrouille 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 verrouiller le média dans le lecteur.

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_INVALID_DEVICE_REQUEST, STATUS_NO_MEDIA_IN_DEVICE ou STATUS_DEVICE_NOT_CONNECTED.

Exigences

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

Voir aussi

IOCTL_STORAGE_EJECT_MEDIA