Partilhar via


estrutura SCSI_PASS_THROUGH_EX (ntddscsi.h)

A estrutura SCSI_PASS_THROUGH_EX é usada em conjunto com uma solicitação IOCTL_SCSI_PASS_THROUGH_EX para instruir o driver de porta a enviar um comando SCSI inserido para o dispositivo de destino. SCSI_PASS_THROUGH_EX pode conter transferências de dados bidirecionais e um bloco de dados de comando de comprimento variável.

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, use os modelos de driver do Storport e do driver de miniporto storport .

Sintaxe

typedef struct _SCSI_PASS_THROUGH_EX {
  ULONG     Version;
  ULONG     Length;
  ULONG     CdbLength;
  ULONG     StorAddressLength;
  UCHAR     ScsiStatus;
  UCHAR     SenseInfoLength;
  UCHAR     DataDirection;
  UCHAR     Reserved;
  ULONG     TimeOutValue;
  ULONG     StorAddressOffset;
  ULONG     SenseInfoOffset;
  ULONG     DataOutTransferLength;
  ULONG     DataInTransferLength;
  ULONG_PTR DataOutBufferOffset;
  ULONG_PTR DataInBufferOffset;
  UCHAR     Cdb[ANYSIZE_ARRAY];
} SCSI_PASS_THROUGH_EX, *PSCSI_PASS_THROUGH_EX;

Membros

Version

A versão dessa estrutura. Defina como 0.

Length

O tamanho dessa estrutura, em bytes. Defina como sizeof(SCSI_PASS_THROUGH_EX).

CdbLength

O tamanho do bloco de descritor de comando SCSI no Cdb, em bytes.

StorAddressLength

O comprimento, em bytes, da estrutura de endereço do dispositivo de armazenamento no deslocamento de StorAddressOffset após essa estrutura.

ScsiStatus

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

SenseInfoLength

O tamanho em bytes do buffer de sentido de solicitação. Esse membro é opcional e pode ser definido como 0.

DataDirection

Indica se o comando SCSI lerá ou gravará dados. Esse campo deve ser um dos seguintes valores:

Valor Significado
SCSI_IOCTL_DATA_OUT Gravar dados no dispositivo.
SCSI_IOCTL_DATA_IN Ler dados do dispositivo.
SCSI_IOCTL_DATA_UNSPECIFIED Nenhum dado está sendo transferido.
SCSI_IOCTL_DATA_BIDIRECTIONAL Os dados são válidos para entrada e saída.

Reserved

Reservado. Defina como 0.

TimeOutValue

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

StorAddressOffset

O local da estrutura de endereço do dispositivo de armazenamento de destino, em bytes, desde o início dessa estrutura.

SenseInfoOffset

Deslocamento do início dessa estrutura para o buffer de sensor de solicitação. Defina como 0 se nenhum buffer de sentido de solicitação estiver presente.

DataOutTransferLength

Indica o tamanho em bytes do buffer de dados de saída. Muitos dispositivos transferem partes de dados de comprimento predefinido. O valor em DataOutTransferLength 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. Se nenhum buffer de dados de saída estiver presente, esse membro será definido como 0.

DataInTransferLength

Indica o tamanho em bytes do buffer de dados de entrada. Muitos dispositivos transferem partes de dados de comprimento predefinido. O valor em DataInTransferLength 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. Se nenhum buffer de dados de entrada estiver presente, esse membro será definido como 0.

DataOutBufferOffset

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

DataInBufferOffset

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

Cdb[ANYSIZE_ARRAY]

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

Comentários

A estrutura SCSI_PASS_THROUGH_EX é usada com o código de controle IOCTL_SCSI_PASS_THROUGH_EX , 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_EX. Ao lidar com uma solicitação de IOCTL_SCSI_PASS_THROUGH_DIRECT_EX , o sistema bloqueia o buffer na memória do usuário e o dispositivo acessa essa memória diretamente.

Observação

Os drivers em execução em uma versão de 64 bits do Windows devem usar a estrutura SCSI_PASS_THROUGH32_EX como o tipo de dados de solicitação ao lidar com uma solicitação IOCTL_SCSI_PASS_THROUGH_EX de um processo de 32 bits.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows 8.
Cabeçalho ntddscsi.h (inclua Ntddscsi.h)

Confira também

IOCTL_SCSI_PASS_THROUGH

IOCTL_SCSI_PASS_THROUGH_EX

SCSI_PASS_THROUGH