IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT IOCTL (ntddscsi.h)
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 restricciones siguientes 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 de 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 va a enviar 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 producirá un error en 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 MPIO PathId, 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 tener al menos tamaño de(MPIO_PASS_THROUGH_PATH) o, si se envía mediante una aplicación de 32 bits en un sistema operativo de 64 bits, tamaño de(MPIO_PASS_THROUGH_PATH32).
Búfer de salida
El controlador de puerto devuelve los datos de detección de solicitudes y los datos transferidos desde el dispositivo al búfer en Irp->AssociatedIrp.SystemBuffer.
Longitud del búfer de salida
El senseInfoLength y dataTransferLength de la estructura SCSI_PASS_THROUGH_DIRECT incrustada se actualizan para indicar la cantidad de datos que se transfieren.
Bloque de estado
El campo información de se establece en el número de bytes devueltos en el búfer de salida en Irp->AssociatedIrp.SystemBuffer. El campo Estado de se establece en STATUS_SUCCESS, o posiblemente en STATUS_BUFFER_TOO_SMALL o STATUS_INVALID_PARAMETER si el valor de longitud de entrada en el SCSI_PASS_THROUGH_DIRECT incrustado no se establece correctamente.
Requisitos
Requisito | Valor |
---|---|
encabezado de | ntddscsi.h (incluya Ntddscsi.h) |