IOCTL_VOLUME_READ_PLEX IOCTL (ntddvol.h)
Realiza una lectura en un plex específico de un volumen. Dado que todos los plexos son idénticos, el administrador de volúmenes puede recuperar datos de cualquiera de los plexos de un volumen durante una operación de lectura normal. El administrador de volúmenes distribuye las lecturas entre los plexos de un volumen, para equilibrar la carga de E/S en los medios físicos y maximizar el rendimiento de lectura.
Sin embargo, si una aplicación o un componente en modo kernel deben leer datos de un plex determinado en lugar de permitir que el administrador de volúmenes elija uno, puede usar este IOCTL para hacerlo.
Código principal
Búfer de entrada
El autor de la llamada inserta la estructura VOLUME_READ_PLEX_INPUT, que contiene el desplazamiento lógico, al principio del búfer en Irp-AssociatedIrp.SystemBuffer>.
Longitud del búfer de entrada
Parameters.DeviceIoControl.InputBufferLength en la ubicación de la pila de E/S del IRP indica el tamaño, en bytes, del búfer de entrada, que debe ser mayor o igual que el valor de sizeof(VOLUME_READ_PLEX_INPUT).Búfer de salida
Al igual que IRP_MJ_READ, este IOCTL almacena los datos de lectura en el búfer de memoria pasados como una lista de descriptores de memoria (MDL) en el campo Irp-MdlAddress>.
Longitud del búfer de salida
Longitud del búfer.
Bloque de estado
Si la operación se realiza correctamente, el administrador de volúmenes establece el campo Estado en STATUS_SUCCESS.
La estructura de VOLUME_READ_PLEX_INPUT en Irp-AssociatedIrp.SystemBuffer> tiene un miembro Length que debe alinearse en un límite de 512 bytes. Si Length no tiene la alineación adecuada, se produce un error en la operación y el administrador de volúmenes establece el campo Estado en VKE_EINVAL.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible a partir de Windows XP. |
Encabezado | ntddvol.h (incluya Ntddvol.h) |