Condividi tramite


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

IRP_MJ_DEVICE_CONTROL

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)

Vedere anche

VOLUME_READ_PLEX_INPUT