Compartilhar via


estrutura SCSI_PASS_THROUGH (ntddscsi.h)

A estrutura SCSI_PASS_THROUGH é usada em conjunto com uma solicitação IOCTL_SCSI_PASS_THROUGH para instruir o driver de porta a enviar um comando SCSI inserido para o dispositivo de destino.

Nota O driver de porta SCSI e os modelos de driver de miniporta SCSI podem ser alterados ou indisponíveis no futuro. Em vez disso, recomendamos usar os modelos de driver storport e driver de miniporto Storport .
 

Sintaxe

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;

Membros

Length

Contém o valor de sizeof(SCSI_PASS_THROUGH).

ScsiStatus

Relata o status SCSI que foi retornado pelo HBA ou pelo dispositivo de destino.

PathId

Indica a porta SCSI ou o barramento para a solicitação.

TargetId

Indica o controlador de destino ou o dispositivo no barramento.

Lun

Indica o número da unidade lógica do dispositivo.

CdbLength

Indica o tamanho em bytes do bloco do descritor de comando SCSI.

SenseInfoLength

Indica o tamanho em bytes do buffer de sentido de solicitação.

DataIn

Esse campo deve ter um dos três valores:

#######

DataTransferLength

Indica o tamanho em bytes do buffer de dados. Muitos dispositivos transferem partes de dados de comprimento predefinido. O valor em DataTransferLength deve ser um múltiplo integral desse comprimento mínimo predefinido especificado pelo dispositivo. Se ocorrer uma subexecutação, o driver de miniporto deverá atualizar esse membro para o número de bytes realmente transferidos.

TimeOutValue

Indica o intervalo em segundos que a solicitação pode ser executada antes que o driver de porta considere que ele atingiu o tempo limite.

DataBufferOffset

Contém um deslocamento do início dessa estrutura para o buffer de dados. O deslocamento deve respeitar os requisitos de alinhamento de dados do dispositivo.

SenseInfoOffset

Deslocamento do início dessa estrutura para o buffer de sentido de solicitação.

Cdb[16]

Especifica o bloco do descritor de comando SCSI a ser enviado para o dispositivo de destino.

Comentários

A estrutura SCSI_PASS_THROUGH é usada com IOCTL_SCSI_PASS_THROUGH, que é uma solicitação de controle de dispositivo em buffer. Para ignorar o buffer na memória do sistema, os chamadores devem usar IOCTL_SCSI_PASS_THROUGH_DIRECT. Ao lidar com uma solicitação de IOCTL_SCSI_PASS_THROUGH_DIRECT, o sistema bloqueia o buffer na memória do usuário e o dispositivo acessa essa memória diretamente.

Os membros de SCSI_PASS_THROUGH correspondem aproximadamente aos membros de uma estrutura SCSI_REQUEST_BLOCK . Os valores do membro DataIn correspondem aos sinalizadores SCSI_IOCTL_DATA_IN, SCSI_IOCTL_DATA_OUT e SCSI_IOCTL_DATA_UNSPECIFIED atribuídos ao membro SrbFlags do SCSI_REQUEST_BLOCK.

Requisitos

Requisito Valor
Cabeçalho ntddscsi.h (inclua Ntddscsi.h)

Confira também

IOCTL_SCSI_PASS_THROUGH

IOCTL_SCSI_PASS_THROUGH_DIRECT

SCSI_PASS_THROUGH_DIRECT

SCSI_REQUEST_BLOCK