Compartilhar via


estrutura SCSI_PASS_THROUGH_DIRECT (ntddscsi.h)

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

Observação

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

Sintaxe

typedef struct _SCSI_PASS_THROUGH_DIRECT {
  USHORT Length;
  UCHAR  ScsiStatus;
  UCHAR  PathId;
  UCHAR  TargetId;
  UCHAR  Lun;
  UCHAR  CdbLength;
  UCHAR  SenseInfoLength;
  UCHAR  DataIn;
  ULONG  DataTransferLength;
  ULONG  TimeOutValue;
  PVOID  DataBuffer;
  ULONG  SenseInfoOffset;
  UCHAR  Cdb[16];
} SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;

Membros

Length

Contém o valor de sizeof(SCSI_PASS_THROUGH_DIRECT).

ScsiStatus

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

PathId

Indica a porta ou o barramento SCSI 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 de descritor de comando SCSI.

SenseInfoLength

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

DataIn

Indica se o comando SCSI lerá ou gravará dados. Esse campo deve ter um dos três valores:

Tipo de Transferência de Dados Significado
SCSI_IOCTL_DATA_IN Ler dados do dispositivo.
SCSI_IOCTL_DATA_OUT Gravar dados no dispositivo.
SCSI_IOCTL_DATA_UNSPECIFIED Nenhum dado transferido.

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 específico do sistema operacional considere o tempo limite.

DataBuffer

Ponteiro para o buffer de dados.

SenseInfoOffset

Contém um 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_DIRECT é usada com IOCTL_SCSI_PASS_THROUGH_DIRECT. Com essa solicitação, o sistema bloqueia o buffer na memória do usuário e o dispositivo acessa essa memória diretamente. Para obter um equivalente de buffer duplo dessa solicitação de controle de dispositivo, consulte IOCTL_SCSI_PASS_THROUGH e SCSI_PASS_THROUGH.

Os membros de SCSI_PASS_THROUGH_DIRECT 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

SCSI_REQUEST_BLOCK