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
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) |