IOCTL_VOLUME_READ_PLEX IOCTL (ntddvol.h)
Effectue une lecture sur un plex spécifique d’un volume. Étant donné que tous les plex 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 plex d’un volume, afin d’équilibrer la charge d’E/S sur le support physique et d’optimiser les performances de lecture.
Si, toutefois, une application ou un composant en 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 ce 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 dans Irp-AssociatedIrp.SystemBuffer>.
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 à la valeur sizeof(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 État sur STATUS_SUCCESS.
La structure VOLUME_READ_PLEX_INPUT dans 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.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows XP. |
En-tête | ntddvol.h (inclure Ntddvol.h) |