estrutura SCSI_PASS_THROUGH_DIRECT (ntddscsi.h)
A estrutura SCSI_PASS_THROUGH_DIRECT é usada em conjunto com uma solicitação IOCTL_SCSI_PASS_THROUGH_DIRECT para instruir o driver de porta a enviar um comando SCSI inserido para o dispositivo de destino.
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, recomendamos usar os modelos de driver do Storport e do driver de miniporto storport .
Sintaxe
typedef struct _SCSI_PASS_THROUGH_DIRECT {
USHORT Length;
UCHAR ScsiStatus;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
UCHAR CdbLength;
UCHAR SenseInfoLength;
UCHAR DataIn;
ULONG DataTransferLength;
ULONG TimeOutValue;
PVOID DataBuffer;
ULONG SenseInfoOffset;
UCHAR Cdb[16];
} SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;
Membros
Length
Contém o valor de sizeof(SCSI_PASS_THROUGH_DIRECT).
ScsiStatus
Relata o status SCSI que foi retornado pelo HBA ou pelo dispositivo de destino.
PathId
Indica a porta ou o barramento SCSI 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 de descritor de comando SCSI.
SenseInfoLength
Indica o tamanho em bytes do buffer de sensor de solicitação.
DataIn
Indica se o comando SCSI lerá ou gravará dados. Esse campo deve ter um dos três 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. |
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 específico do sistema operacional considere o tempo limite.
DataBuffer
Ponteiro para o buffer de dados.
SenseInfoOffset
Contém um 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_DIRECT é usada com IOCTL_SCSI_PASS_THROUGH_DIRECT. 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 e SCSI_PASS_THROUGH.
Os membros de SCSI_PASS_THROUGH_DIRECT 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) |