Compartilhar via


estrutura SCSI_PASS_THROUGH_DIRECT_EX (ntddscsi.h)

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

Observação

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_DIRECT_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;
  VOID  *DataOutBuffer;
  VOID  *DataInBuffer;
  UCHAR Cdb[ANYSIZE_ARRAY];
} SCSI_PASS_THROUGH_DIRECT_EX, *PSCSI_PASS_THROUGH_DIRECT_EX;

Membros

Version

A versão dessa estrutura. Defina como 0.

Length

O tamanho desta estrutura. Defina como sizeof(SCSI_PASS_THROUGH_DIRECT_EX).

CdbLength

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

StorAddressLength

O comprimento da estrutura de endereços do dispositivo de armazenamento no deslocamento de StorAddressOffset após essa estrutura. Isso é definido como sizeof(STOR_ADDR_BTL8).

ScsiStatus

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

SenseInfoLength

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

DataDirection

Esse campo deve ter um destes 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.
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 que ele atingiu o tempo limite.

StorAddressOffset

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

SenseInfoOffset

Deslocamento do início dessa estrutura para o buffer de sentido 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.

DataOutBuffer

Um ponteiro para um buffer de dados de saída.

DataInBuffer

Um ponteiro para um buffer de dados de entrada.

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_DIRECT_EX é usada com IOCTL_SCSI_PASS_THROUGH_DIRECT_EX. 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_EX e SCSI_PASS_THROUGH_EX.

Observação

Os drivers em execução em uma versão de 64 bits do Windows devem usar a estrutura SCSI_PASS_THROUGH_DIRECT32_EX como o tipo de dados de solicitação ao lidar com uma solicitação de IOCTL_SCSI_PASS_THROUGH_DIRECT_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_DIRECT_EX

IOCTL_SCSI_PASS_THROUGH_DIRECT_EX

SCSI_PASS_THROUGH_DIRECT

STOR_ADDR_BTL8