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) |