IOCTL_MOUNTMGR_QUERY_POINTS IOCTL (mountmgr.h)
Ce IOCTL retourne des triples qui se composent d’un nom de lien symbolique persistant pour le volume (autrement dit, un point de montage), un ID unique pour le volume et un nom d’appareil nonpersistent (par exemple, « \Device\HarddiskVolume1 ») pour le volume. L’entrée de ce IOCTL est une structure MOUNTMGR_MOUNT_POINT qui contient un seul triple.
Si le triple d’entrée contient un ID unique ou un nom d’appareil non persistant, la requête récupère tous les points de montage associés (liens symboliques), y compris le chemin d’accès GUID du volume et les lettres de lecteur. Toutefois, si le triple d’entrée a un lien symbolique, mais ne spécifie pas l’ID unique ou le nom de l’appareil, la requête retourne uniquement un triple unique qui contient le lien symbolique fourni dans l’entrée, ainsi que l’ID unique et le nom de l’appareil. L’appelant doit soumettre une autre IOCTL avec l’ID unique ou le nom de l’appareil pour récupérer les points de montage restants.
Si le triple d’entrée est vide, le gestionnaire de montage retourne la liste complète des appareils montés.
Le gestionnaire de montage retourne des triples qui correspondent à autant d’informations que celles fournies par l’appelant. Si l’appelant envoie l’ID unique, le gestionnaire de montage retourne tous les triples avec cet ID unique. Si l’appelant entre le chemin d’accès du volume ou une lettre de lecteur comme nom de lien symbolique, le gestionnaire de montage retourne uniquement le triple du lien symbolique. Il y a une entrée par lien symbolique. Si l’appelant entre un nom de chemin d’accès d’appareil, le gestionnaire de montage retourne uniquement les triples pour ce nom de chemin d’accès d’appareil. Si l’appelant entre un ID unique et un lien symbolique, là encore, le gestionnaire de montage retourne une seule entrée pour ce lien symbolique. Un appelant le ferait pour obtenir le nom du chemin d’accès de l’appareil. Si l’appelant n’entre aucun nom de chemin d’accès d’appareil, ID unique ou lien symbolique, le gestionnaire de montage retourne toutes les entrées/triples.
Code principal
Mémoire tampon d’entrée
Le client du gestionnaire de montage initialise la structure MOUNTMGR_MOUNT_POINT au début de la mémoire tampon à Irp->AssociatedIrp.SystemBuffer. Immédiatement après cette structure, le client MM charge le nom de lien symbolique, l’ID unique et le nom de l’appareil, dans cet ordre.
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_MOUNT_POINT)
.
Mémoire tampon de sortie
Le gestionnaire de montage initialise une structure de type variable de type MOUNTMGR_MOUNT_POINTS au début de la mémoire tampon à Irp->AssociatedIrp.SystemBuffer. Le gestionnaire de montage insère les points de montage, associés au volume indiqué, à l’adresse pointée par le MountPoints[] membre de cette structure. Chaque point de montage est représenté par une structure MOUNTMGR_MOUNT_POINT telle que définie dans la section Input pour cette IOCTL.
Longueur de la mémoire tampon de sortie
Parameters.DeviceIoControl.OutputBufferLength à l’emplacement de la pile d’E/S de l’IRP indique la taille, en octets, de la mémoire tampon de sortie, qui doit être supérieure ou égale à sizeof(MOUNTMGR_MOUNT_POINTS)
.
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.
Si ni l’ID unique ni le nom de l’appareil nonpersistent ne figurent dans la liste des volumes montés sur l’appareil, le champ Status est défini sur STATUS_INVALID_PARAMETER.
Si InputBufferLength est inférieur à sizeof(MOUNTMGR_MOUNT_POINT)
, le champ Status est défini sur STATUS_INVALID_PARAMETER.
Si inputBufferLength est inférieur à la longueur totale des trois chaînes d’ID d’entrée, le champ Status est défini sur STATUS_INVALID_PARAMETER.
Si OutputBufferLength est inférieur à sizeof(MOUNTMGR_MOUNT_POINT)
, le champ Status est défini sur STATUS_INVALID_PARAMETER.
Si outputBufferLength est inférieur à sizeof(MOUNTMGR_MOUNT_POINTS)
plus la somme des tailles du point de montage triple, le champ Status est défini sur STATUS_BUFFER_OVERFLOW.
Si l’une des trois chaînes contenues dans l’un des triples est alignée sur une adresse impaire (par exemple, adresse & 01 != 0), 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) |