Freigeben über


IOCTL_VOLUME_READ_PLEX IOCTL (ntddvol.h)

Führt einen Lesevorgang für einen bestimmten Plex eines Volumes aus. Da alle Plexes identisch sind, kann der Volume-Manager während eines normalen Lesevorgangs Daten aus den Plexes eines Volumes abrufen. Der Volume-Manager verteilt Lesevorgänge auf die Plexes eines Volumes, um die E/A-Last auf den physischen Medien auszugleichen und die Leseleistung zu maximieren.

Wenn jedoch eine Anwendung oder Kernelmoduskomponente Daten aus einem bestimmten Plex lesen muss, anstatt den Volume-Manager auswählen zu lassen, kann er dazu diese IOCTL verwenden.

Hauptcode

IRP_MJ_DEVICE_CONTROL

Eingabepuffer

Der Aufrufer fügt die VOLUME_READ_PLEX_INPUT-Struktur, die den logischen Offset enthält, am Anfang des Puffers bei Irp-AssociatedIrp.SystemBuffer> ein.

Eingabepufferlänge

Parameters.DeviceIoControl.InputBufferLength in der E/A-Stapelposition des IRP gibt die Größe des Eingabepuffers in Bytes an, die größer oder gleich dem Wert von sizeof(VOLUME_READ_PLEX_INPUT) sein muss.

Ausgabepuffer

Wie IRP_MJ_READ speichert diese IOCTL die Lesedaten im Speicherpuffer, der als Speicherdeskriptorliste (Memory Descriptor List, MDL) im Feld Irp-MdlAddress> übergeben wird.

Länge des Ausgabepuffers

Die Länge des Puffers.

Statusblock

Wenn der Vorgang erfolgreich ist, legt der Volume-Manager das Feld Status auf STATUS_SUCCESS fest.

Die VOLUME_READ_PLEX_INPUT-Struktur bei Irp-AssociatedIrp.SystemBuffer> verfügt über einen Length-Member, der an einer 512-Byte-Grenze ausgerichtet werden muss. Wenn Length nicht die richtige Ausrichtung aufweist, schlägt der Vorgang fehl, und der Volume-Manager legt das Feld Status auf VKE_EINVAL fest.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows XP.
Kopfzeile ntddvol.h (include Ntddvol.h)

Weitere Informationen

VOLUME_READ_PLEX_INPUT