Partager via


IOCTL_MOUNTMGR_QUERY_POINTS IOCTL (mountmgr.h)

Ce IOCTL renvoie des triples qui se composent d’un nom de lien symbolique persistant pour le volume (c’est-à-dire d’un point de montage), d’un ID unique pour le volume et d’un nom d’appareil non permanent (tel que « \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 demande récupère tous les points de montage associés (liens symboliques), y compris le nom du 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 demande ne retourne qu’un seul triple qui contient le lien symbolique fourni dans l’entrée, ainsi que l’ID unique et le nom de l’appareil. L’appelant doit envoyer un 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 l’intégralité de la liste 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 nom du chemin d’accès du volume ou une lettre de lecteur comme nom de lien symbolique, le gestionnaire de montage retourne uniquement le triple pour le lien symbolique. Il existe 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’appareil. Si l’appelant entre un ID unique et un lien symbolique, là encore, le gestionnaire de montage ne retourne qu’une seule entrée pour ce lien symbolique. Un appelant effectuerait cette opération pour obtenir le nom du chemin d’accès de l’appareil. Si l’appelant n’entre pas de nom de chemin d’appareil, d’ID unique ou de lien symbolique, le gestionnaire de montage retourne toutes les entrées/triples.

Code principal

IRP_MJ_DEVICE_CONTROL

Mémoire tampon d'entrée

Le client mount manager initialise la structure MOUNTMGR_MOUNT_POINT au début de la mémoire tampon sur Irp-AssociatedIrp.SystemBuffer>. Immédiatement après cette structure, le client MM charge le nom du 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 dans 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 longueur variable de type MOUNTMGR_MOUNT_POINTS au début de la mémoire tampon sur Irp-AssociatedIrp.SystemBuffer>. Le gestionnaire de montage insère les points de montage, associés au volume indiqué, à l’adresse pointée par le membre MountPoints[] de cette structure. Chaque point de montage est représenté par une structure MOUNTMGR_MOUNT_POINT telle que définie dans la section Entrée de ce IOCTL.

Longueur de la mémoire tampon de sortie

Parameters.DeviceIoControl.OutputBufferLength dans 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 État est défini sur STATUS_SUCCESS.

Si ni l’ID unique ni le nom de l’appareil non persistant ne figurent dans la liste des appareils montés en volumes, le champ État est défini sur STATUS_INVALID_PARAMETER.

Si InputBufferLength est inférieur sizeof(MOUNTMGR_MOUNT_POINT)à , le champ État 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 État est défini sur STATUS_INVALID_PARAMETER.

Si OutputBufferLength est inférieur sizeof(MOUNTMGR_MOUNT_POINT)à , le champ État est défini sur STATUS_INVALID_PARAMETER.

Si OutputBufferLength est inférieur sizeof(MOUNTMGR_MOUNT_POINTS) à la somme des triples du point de montage, le champ État 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 État 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.

Configuration requise

Condition requise Valeur
En-tête mountmgr.h (inclure Mountmgr.h)

Voir aussi

MOUNTMGR_MOUNT_POINTS