SCSI_PASS_THROUGH結構 (ntddscsi.h)
SCSI_PASS_THROUGH 結構會與 IOCTL_SCSI_PASS_THROUGH 要求搭配使用,以指示埠驅動程式將內嵌 SCSI 命令傳送至目標裝置。
語法
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
此欄位必須有三個值之一:
#######
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旗標。
規格需求
需求 | 值 |
---|---|
標頭 | ntddscsi.h (包含 Ntddscsi.h) |