SCSI_PASS_THROUGH 構造体 (ntddscsi.h)
SCSI_PASS_THROUGH構造体は、埋め込み SCSI コマンドをターゲット デバイスに送信するようにポート ドライバーに指示する IOCTL_SCSI_PASS_THROUGH 要求と組み合わせて使用されます。
構文
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;
メンバー
Length
sizeof(SCSI_PASS_THROUGH) の値を格納します。
ScsiStatus
HBA またはターゲット デバイスによって返された SCSI 状態を報告します。
PathId
要求の SCSI ポートまたはバスを示します。
TargetId
バス上のターゲット コントローラーまたはデバイスを示します。
Lun
デバイスの論理ユニット番号を示します。
CdbLength
SCSI コマンド記述子ブロックのサイズをバイト単位で示します。
SenseInfoLength
要求センス バッファーのサイズをバイト単位で示します。
DataIn
このフィールドには、次の 3 つの値のいずれかが必要です。
#######
DataTransferLength
データ バッファーのサイズをバイト単位で示します。 多くのデバイスは、定義済みの長さのデータのチャンクを転送します。 DataTransferLength の値は、デバイスで指定される、この定義済みの最小長の整数倍数である必要があります。 アンダーランが発生した場合、ミニポート ドライバーは、実際に転送されたバイト数にこのメンバーを更新する必要があります。
TimeOutValue
ポート ドライバーがタイムアウトしたと見なす前に、要求が実行できる間隔を秒単位で示します。
DataBufferOffset
この構造体の先頭からデータ バッファーへのオフセットが含まれます。 オフセットは、デバイスのデータアラインメント要件を考慮する必要があります。
SenseInfoOffset
この構造体の先頭から要求センス バッファーへのオフセット。
Cdb[16]
ターゲット デバイスに送信する SCSI コマンド記述子ブロックを指定します。
注釈
SCSI_PASS_THROUGH構造体は、バッファーに格納されたデバイス制御要求である IOCTL_SCSI_PASS_THROUGH で使用されます。 システム メモリのバッファリングをバイパスするには、呼び出し元は IOCTL_SCSI_PASS_THROUGH_DIRECT を使用する必要があります。 IOCTL_SCSI_PASS_THROUGH_DIRECT要求を処理すると、システムはユーザー メモリ内のバッファーをロックダウンし、デバイスはこのメモリに直接アクセスします。
SCSI_PASS_THROUGHのメンバーは、 SCSI_REQUEST_BLOCK 構造体のメンバーとほぼ同じです。 DataIn メンバーの値は、SCSI_REQUEST_BLOCKの SrbFlags メンバーに割り当てられたSCSI_IOCTL_DATA_IN、SCSI_IOCTL_DATA_OUT、およびSCSI_IOCTL_DATA_UNSPECIFIEDフラグに対応します。
要件
要件 | 値 |
---|---|
Header | ntddscsi.h (Ntddscsi.h を含む) |