Partager via


IOCTL_VOLUME_READ_PLEX IOCTL (ntddvol.h)

Effectue une lecture sur un plex spécifique d’un volume. Étant donné que tous les plexes sont identiques, le gestionnaire de volumes peut récupérer des données de n’importe quel plex d’un volume pendant une opération de lecture normale. Le gestionnaire de volumes répartit les lectures entre les plexes d’un volume, pour équilibrer la charge d’E/S sur le support physique et optimiser les performances de lecture.

Toutefois, si un composant d’application ou de mode noyau doit lire des données à partir d’un plex particulier au lieu de laisser le gestionnaire de volumes en choisir un, il peut utiliser cette IOCTL pour le faire.

Code principal

IRP_MJ_DEVICE_CONTROL

Mémoire tampon d’entrée

L’appelant insère la structure VOLUME_READ_PLEX_INPUT contenant le décalage logique, 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 à la valeur de taille de(VOLUME_READ_PLEX_INPUT).

Mémoire tampon de sortie

Comme IRP_MJ_READ, ce IOCTL stocke les données de lecture dans la mémoire tampon passée en tant que liste de descripteurs de mémoire (MDL) dans le champ Irp->MdlAddress.

Longueur de la mémoire tampon de sortie

Longueur de la mémoire tampon.

Bloc d’état

Si l’opération réussit, le gestionnaire de volumes définit le champ Status sur STATUS_SUCCESS.

La structure VOLUME_READ_PLEX_INPUT à Irp->AssociatedIrp.SystemBuffer a un membre Length qui doit être aligné sur une limite de 512 octets. Si longueur n’a pas l’alignement approprié, l’opération échoue et le gestionnaire de volumes définit le champ état sur VKE_EINVAL.

Exigences

Exigence Valeur
client minimum pris en charge Disponible à partir de Windows XP.
d’en-tête ntddvol.h (include Ntddvol.h)

Voir aussi

VOLUME_READ_PLEX_INPUT