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