estrutura SCSI_PASS_THROUGH (ntddscsi.h)
A estrutura SCSI_PASS_THROUGH é usada em conjunto com uma solicitação IOCTL_SCSI_PASS_THROUGH para instruir o driver de porta a enviar um comando SCSI inserido para o dispositivo de destino.
Sintaxe
typedef struct _SCSI_PASS_THROUGH {
USHORT Length;
UCHAR ScsiStatus;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
UCHAR CdbLength;
UCHAR SenseInfoLength;
UCHAR DataIn;
ULONG DataTransferLength;
ULONG TimeOutValue;
ULONG_PTR DataBufferOffset;
ULONG SenseInfoOffset;
UCHAR Cdb[16];
} SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;
Membros
Length
Contém o valor de sizeof(SCSI_PASS_THROUGH).
ScsiStatus
Relata o status SCSI que foi retornado pelo HBA ou pelo dispositivo de destino.
PathId
Indica a porta SCSI ou o barramento 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 do descritor de comando SCSI.
SenseInfoLength
Indica o tamanho em bytes do buffer de sentido de solicitação.
DataIn
Esse campo deve ter um dos três valores:
#######
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 considere que ele atingiu o tempo limite.
DataBufferOffset
Contém um deslocamento do início dessa estrutura para o buffer de dados. O deslocamento deve respeitar os requisitos de alinhamento de dados do dispositivo.
SenseInfoOffset
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 é usada com IOCTL_SCSI_PASS_THROUGH, 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. Ao lidar com uma solicitação de IOCTL_SCSI_PASS_THROUGH_DIRECT, o sistema bloqueia o buffer na memória do usuário e o dispositivo acessa essa memória diretamente.
Os membros de SCSI_PASS_THROUGH 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) |