IOCTL_VOLUME_READ_PLEX IOCTL (ntddvol.h)
Esegue una lettura su un specifico di un volume. Poiché tutti i plessi sono identici, la gestione volumi può recuperare i dati daiplexes di un volume durante una normale operazione di lettura. Il gestore volumi distribuisce le letture tra iplexes di un volume, per bilanciare il carico di I/O sui supporti fisici e ottimizzare le prestazioni di lettura.
Se, tuttavia, un componente in modalità kernel o applicazione deve leggere i dati da un particolare plex invece di consentire alla gestione volumi di sceglierne uno, può usare questo IOCTL a tale scopo.
Codice principale
Buffer di input
Il chiamante inserisce la struttura VOLUME_READ_PLEX_INPUT, contenente l'offset logico, all'inizio del buffer in corrispondenza di Irp->AssociatedIrp.SystemBuffer.
Lunghezza del buffer di input
Parameters.DeviceIoControl.InputBufferLength nella posizione dello stack di I/O dell'IRP indica le dimensioni, in byte, del buffer di input, che deve essere maggiore o uguale al valore di sizeof(VOLUME_READ_PLEX_INPUT).Buffer di output
Come IRP_MJ_READ, questo IOCTL archivia i dati letti nel buffer di memoria passato come elenco di descrittori di memoria (MDL) nel campo Irp->MdlAddress.
Lunghezza del buffer di output
Lunghezza del buffer.
Blocco di stato
Se l'operazione ha esito positivo, gestione volumi imposta il campo stato su STATUS_SUCCESS.
La struttura VOLUME_READ_PLEX_INPUT in Irp->AssociatedIrp.SystemBuffer dispone di un membro Length che deve essere allineato su un limite di 512 byte. Se lunghezza non dispone dell'allineamento corretto, l'operazione ha esito negativo e gestione volumi imposta il campo stato su VKE_EINVAL.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Disponibile a partire da Windows XP. |
intestazione | ntddvol.h (include Ntddvol.h) |