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

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

Voir aussi

VOLUME_READ_PLEX_INPUT