Partager via


IOCTL_MOUNTMGR_CHANGE_NOTIFY IOCTL (mountmgr.h)

Les clients envoient cette IOCTL au gestionnaire de montage pour être informés chaque fois qu’il existe une modification dans la base de données de nom de lien symbolique persistant du gestionnaire de montage.

Le gestionnaire de montage gère un compteur appelé EpicNumber qui enregistre le nombre de modifications qui se sont produites dans sa base de données de noms persistante depuis le dernier démarrage. Les clients envoient un numéro au gestionnaire de montage avec chaque IRP de demande de notification de modification, et le gestionnaire de montage répond de la manière suivante :

  • Si le nombre fourni par le client n’est pas égal à EpicNumber, le gestionnaire de montage retourne STATUS_SUCCESS, indiquant que les modifications se sont produites depuis que le client a comparé son nombre au EpicNumberdu gestionnaire de montage.

  • Si le nombre fourni par le client est égal à EpicNumber, le gestionnaire de montage l’interprète comme une demande pour être informé de la prochaine modification apportée à la base de données de noms persistants et met en file d’attente l’IRP de notification de modification et retourne STATUS_PENDING. Chaque fois qu’une modification se produit dans la base de données, le gestionnaire de montage termine tous les irps de notification de modification en attente, informant ainsi les clients de la modification.

Un client qui souhaite uniquement être informé des modifications apportées à un volume particulier est conseillé de s’inscrire à la notification de l’appareil cible Plug-and-Play et de surveiller les GUID_IO_VOLUME_NAME_CHANGE.

Code principal

IRP_MJ_DEVICE_CONTROL

Mémoire tampon d’entrée

Le client du gestionnaire de montage initialise la structure MOUNTMGR_CHANGE_NOTIFY_INFO au début de la mémoire tampon à Irp->AssociatedIrp.SystemBuffer.

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

Parameters.DeviceIoControl.InputBufferLength à l’emplacement de la pile d’E/S de l’IRP indique la taille, en octets, de la mémoire tampon d’entrée, qui doit être supérieure ou égale à sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO).

Mémoire tampon de sortie

Le gestionnaire de montage retourne le EpicNumber actuel dans la structure MOUNTMGR_CHANGE_NOTIFY_INFO au début de la mémoire tampon à Irp->AssociatedIrp.SystemBuffer.

Longueur de la mémoire tampon de sortie

Aucun.

Mémoire tampon d’entrée/sortie

N/A

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

N/A

Bloc d’état

Si l’opération réussit, le champ Status est défini sur STATUS_SUCCESS et le champ Information est défini sur sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO).

Si InputBufferLength est inférieur à sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO) ou OutputBufferLength est inférieur à sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO), le champ Status est défini sur STATUS_INVALID_PARAMETER.

Remarques

Pour plus d’informations, consultez prise en charge des demandes mount Manager dans un pilote de classe de stockage.

Exigences

Exigence Valeur
d’en-tête mountmgr.h (include Mountmgr.h)

Voir aussi

MOUNTMGR_CHANGE_NOTIFY_INFO