Compartir a través de


estructura SCSI_PASS_THROUGH (ntddscsi.h)

La estructura SCSI_PASS_THROUGH se usa junto con una solicitud de IOCTL_SCSI_PASS_THROUGH para indicar al controlador de puerto que envíe un comando SCSI incrustado al dispositivo de destino.

Nota Los modelos del controlador de puerto SCSI y del controlador de miniporte SCSI pueden modificarse o no estar disponibles en el futuro. En su lugar, se recomienda usar el controlador Storport y los modelos de controlador de miniport storport .
 

Sintaxis

typedef struct _SCSI_PASS_THROUGH {
  USHORT    Length;
  UCHAR     ScsiStatus;
  UCHAR     PathId;
  UCHAR     TargetId;
  UCHAR     Lun;
  UCHAR     CdbLength;
  UCHAR     SenseInfoLength;
  UCHAR     DataIn;
  ULONG     DataTransferLength;
  ULONG     TimeOutValue;
  ULONG_PTR DataBufferOffset;
  ULONG     SenseInfoOffset;
  UCHAR     Cdb[16];
} SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;

Miembros

Length

Contiene el valor de sizeof(SCSI_PASS_THROUGH).

ScsiStatus

Informa del estado SCSI devuelto por el HBA o el dispositivo de destino.

PathId

Indica el puerto SCSI o el bus de la solicitud.

TargetId

Indica el controlador de destino o el dispositivo en el bus.

Lun

Indica el número de unidad lógica del dispositivo.

CdbLength

Indica el tamaño en bytes del bloque de descriptores de comandos SCSI.

SenseInfoLength

Indica el tamaño en bytes del búfer de detección de solicitudes.

DataIn

Este campo debe tener uno de tres valores:

#######

DataTransferLength

Indica el tamaño en bytes del búfer de datos. Muchos dispositivos transfieren fragmentos de datos de longitud predefinida. El valor de DataTransferLength debe ser un múltiplo entero de esta longitud predefinida y mínima especificada por el dispositivo. Si se produce una ejecución inferior, el controlador de minipuerto debe actualizar este miembro al número de bytes transferidos realmente.

TimeOutValue

Indica el intervalo en segundos que la solicitud puede ejecutarse antes de que el controlador de puerto considere que ha agotado el tiempo de espera.

DataBufferOffset

Contiene un desplazamiento desde el principio de esta estructura hasta el búfer de datos. El desplazamiento debe respetar los requisitos de alineación de datos del dispositivo.

SenseInfoOffset

Desfase desde el principio de esta estructura hasta el búfer de detección de solicitudes.

Cdb[16]

Especifica el bloque de descriptor de comandos SCSI que se va a enviar al dispositivo de destino.

Comentarios

La estructura SCSI_PASS_THROUGH se usa con IOCTL_SCSI_PASS_THROUGH, que es una solicitud de control de dispositivo almacenado en búfer. Para omitir el almacenamiento en búfer en la memoria del sistema, los autores de llamadas deben usar IOCTL_SCSI_PASS_THROUGH_DIRECT. Al controlar una solicitud de IOCTL_SCSI_PASS_THROUGH_DIRECT, el sistema bloquea el búfer en la memoria del usuario y el dispositivo accede directamente a esta memoria.

Los miembros de SCSI_PASS_THROUGH corresponden aproximadamente a los miembros de una estructura de SCSI_REQUEST_BLOCK . Los valores del miembro DataIn corresponden a las marcas de SCSI_IOCTL_DATA_IN, SCSI_IOCTL_DATA_OUT y SCSI_IOCTL_DATA_UNSPECIFIED asignadas al miembro SrbFlags de SCSI_REQUEST_BLOCK.

Requisitos

Requisito Valor
Header ntddscsi.h (incluya Ntddscsi.h)

Consulte también

IOCTL_SCSI_PASS_THROUGH

IOCTL_SCSI_PASS_THROUGH_DIRECT

SCSI_PASS_THROUGH_DIRECT

SCSI_REQUEST_BLOCK