IOCTL_VOLUME_READ_PLEX IOCTL (ntddvol.h)
Führt ein Lesen eines 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 verbreitet Lesevorgänge unter den Plexes eines Volumes, um die E/A-Auslastung auf den physischen Medien auszugleichen und die Leseleistung zu maximieren.
Wenn jedoch eine Anwendungs- oder Kernelmoduskomponente Daten aus einem bestimmten Plex lesen muss, anstatt dem Volume-Manager die Auswahl zu ermöglichen, kann diese IOCTL dazu verwendet werden.
Hauptcode
Eingabepuffer
Der Aufrufer fügt die VOLUME_READ_PLEX_INPUT-Struktur ein, die den logischen Offset enthält, am Anfang des Puffers bei Irp->AssociatedIrp.SystemBuffer.
Eingabepufferlänge
Parameters.DeviceIoControl.InputBufferLength in der I/O-Stapelposition des IRP gibt die Größe des Eingabepuffers in Byte an, die größer oder gleich dem Wert Sizeof(VOLUME_READ_PLEX_INPUT) sein muss.Ausgabepuffer
Wie IRP_MJ_READspeichert diese IOCTL die Lesedaten im Speicherpuffer, die als Speicherdeskriptorliste (MDL) in der Irp->MdlAddress Feld übergeben werden.
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 weist ein Length Member auf, das an einer Grenze von 512 Byte ausgerichtet werden muss. Wenn Length nicht über die richtige Ausrichtung verfügt, schlägt der Vorgang fehl, und der Volume-Manager legt das feld Status auf VKE_EINVAL fest.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Verfügbar ab Windows XP. |
Header- | ntddvol.h (include Ntddvol.h) |