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 l’utilisation du lecteur, il 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 de l’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 ce 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. En cas d’appel avec ce IOCTL, si l’indicateur permettant d’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êchez 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 à nouveau IOCTL_STORAGE_EJECTION_CONTROL avec Irp->AssociatedIrp.SystemBuffer défini sur une valeur booléenne FALSE. Toutefois, parfois, l’appelant ne parvient pas à déverrouiller correctement l’appareil.

Pour s’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 sur Irp-AssociatedIrp.SystemBuffer> contient une valeur booléenne, 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.

Configuration requise

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

Voir aussi

IOCTL_STORAGE_EJECT_MEDIA