IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT_EX IOCTL (ntddscsi.h)
La solicitud de código de control IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT_EX es la versión extendida de la solicitud de IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT . Esta solicitud proporciona compatibilidad con transferencias de datos bidireccionales y permite un bloque de datos de comandos (CDB) > de 16 bytes.
Este código de control de E/S permite a una aplicación o controlador de kernel enviar un comando SCSI a un LUN real designado. Las siguientes restricciones se aplican al uso de este código de control de E/S:
- Si existe un controlador de clase para el pseudo LUN, la aplicación debe enviar la solicitud a ese controlador de clase. Por lo tanto, una aplicación puede enviar esta solicitud directamente a un MPIO solo si no hay ningún controlador de clase para el dispositivo.
- Todas las solicitudes de paso a través deben ser sincrónicas.
- Las aplicaciones no requieren privilegios administrativos para enviar una solicitud de paso a través a un dispositivo, pero deben tener acceso de lectura y escritura al dispositivo.
- La solicitud consta de una solicitud de paso a través SCSI (en una estructura de SCSI_PASS_THROUGH_DIRECT incrustada), así como determinadas directivas.
- La estructura de paso a través SCSI debe cumplir los requisitos de , como se describe en SCSI_PASS_THROUGH_DIRECT.
- Si la solicitud se envía a través del DSM que afirmó el LUN real, debe indicarse. En tal caso, el propio DSM debe indicar el mismo LUN real. De lo contrario, se rechazará la solicitud.
- La solicitud debe especificar el LUN real que está compuesto por el pseudo LUN en términos de la dirección SCSI anterior o su PathId de MPIO, pero no ambos.
Código principal
Búfer de entrada
Parameters.DeviceIoControl.InputBufferLength indica el tamaño, en bytes, del búfer en Irp-AssociatedIrp.SystemBuffer>.
Longitud del búfer de entrada
El búfer debe ser al menos sizeof(MPIO_PASS_THROUGH_PATH_DIRECT_EX) o, si lo envía una aplicación de 32 bits en un sistema operativo de 64 bits, sizeof(MPIO_PASS_THROUGH_PATH_DIRECT32_EX).
Búfer de salida
El controlador de puerto devuelve los datos de detección de solicitudes y los datos que se transfieren desde el dispositivo al búfer en Irp-AssociatedIrp.SystemBuffer>.
Longitud del búfer de salida
SenseInfoLength y DataOutTransferLength en la estructura de SCSI_PASS_THROUGH_DIRECT_EX incrustada se actualizan para indicar la cantidad de datos que se transfieren.
Bloque de estado
El campo Información se establece en el número de bytes devueltos en el búfer de salida en Irp-AssociatedIrp.SystemBuffer>. El campo Estado se establece en STATUS_SUCCESS, o posiblemente en STATUS_BUFFER_TOO_SMALL o STATUS_INVALID_PARAMETER si el valor de longitud de entrada del SCSI_PASS_THROUGH_DIRECT_EX incrustado no se establece correctamente.
Requisitos
Requisito | Valor |
---|---|
Header | ntddscsi.h (incluya Ntddscsi.h) |