SCSI_PASS_THROUGH_EX 結構 (ntddscsi.h)
SCSI_PASS_THROUGH_EX結構會與IOCTL_SCSI_PASS_THROUGH_EX要求搭配使用,以指示埠驅動程式將內嵌 SCSI 命令傳送至目標裝置。 SCSI_PASS_THROUGH_EX 可以包含雙向數據傳輸和可變長度命令數據區塊。
注意
SCSI 埠驅動程式和 SCSI 迷你埠驅動程式模型未來可能會改變或無法使用。 請改用 Storport 驅動程式 和 Storport 迷你埠 驅動程式模型。
語法
typedef struct _SCSI_PASS_THROUGH_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;
ULONG_PTR DataOutBufferOffset;
ULONG_PTR DataInBufferOffset;
UCHAR Cdb[ANYSIZE_ARRAY];
} SCSI_PASS_THROUGH_EX, *PSCSI_PASS_THROUGH_EX;
成員
Version
這個結構的版本。 設定為 0。
Length
這個 結構的大小,以位元組為單位。 設定為 sizeof(SCSI_PASS_THROUGH_EX)
。
CdbLength
Cdb 中 SCSI 命令描述元區塊的大小,以位元組為單位。
StorAddressLength
此結構之後 StorAddressOffset 位移的記憶體裝置地址結構的長度,以位元組為單位。
ScsiStatus
報告 HBA 或目標裝置所傳回的 SCSI 狀態。
SenseInfoLength
以位元組為單位的要求感知緩衝區大小。 這個成員是選擇性的,而且可以設定為0。
DataDirection
指出 SCSI 命令是否會讀取或寫入數據。 此欄位必須是下列其中一個值:
值 | 意義 |
---|---|
SCSI_IOCTL_DATA_OUT | 將數據寫入裝置。 |
SCSI_IOCTL_DATA_IN | 從裝置讀取數據。 |
SCSI_IOCTL_DATA_UNSPECIFIED | 不會傳輸任何數據。 |
SCSI_IOCTL_DATA_BIDIRECTIONAL | 數據對輸入和輸出都是有效的。 |
Reserved
保留的。 設定為 0。
TimeOutValue
指出要求可以在埠驅動程式將它視為逾時之前執行的間隔,以秒為單位。
StorAddressOffset
目標存儲設備地址結構的位置,以位元組為單位,從這個結構的開頭開始。
SenseInfoOffset
從這個 結構的開頭到要求感知緩衝區的位移。 如果沒有要求感知緩衝區存在,請將 設定為 0。
DataOutTransferLength
表示輸出數據緩衝區的大小,以位元組為單位。 許多裝置會傳輸預先定義長度的數據區塊。 DataOutTransferLength 中的值必須是裝置所指定之預先定義、最小長度的整數倍數。 如果發生不足狀況,迷你埠驅動程序必須將此成員更新為實際傳輸的位元元組數目。 如果沒有輸出數據緩衝區存在,這個成員會設定為 0。
DataInTransferLength
表示輸入數據緩衝區的位元組大小。 許多裝置會傳輸預先定義長度的數據區塊。 DataInTransferLength 中的值必須是裝置所指定之預先定義、最小長度的整數倍數。 如果發生不足狀況,迷你埠驅動程序必須將此成員更新為實際傳輸的位元元組數目。 如果沒有輸入數據緩衝區存在,這個成員會設定為 0。
DataOutBufferOffset
包含從這個 結構開頭到輸出數據緩衝區的位移。 位移必須遵守裝置的數據對齊需求。
DataInBufferOffset
包含從這個結構的開頭到輸入數據緩衝區的位移。 位移必須遵守裝置的數據對齊需求。
Cdb[ANYSIZE_ARRAY]
指定要傳送至目標裝置的SCSI命令描述項區塊。
備註
SCSI_PASS_THROUGH_EX 結構會與IOCTL_SCSI_PASS_THROUGH_EX控件程式代碼搭配使用,這是緩衝的裝置控制要求。 若要略過系統記憶體中的緩衝處理,呼叫端應該使用 IOCTL_SCSI_PASS_THROUGH_DIRECT_EX。 處理 IOCTL_SCSI_PASS_THROUGH_DIRECT_EX 要求時,系統會鎖定用戶記憶體中的緩衝區,而裝置會直接存取此記憶體。
注意
在 64 位版本的 Windows 上執行的驅動程式,必須在處理 32 位進程的IOCTL_SCSI_PASS_THROUGH_EX要求時,使用 SCSI_PASS_THROUGH32_EX 結構作為要求數據類型。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows 8 開始提供。 |
標頭 | ntddscsi.h (包含 Ntddscsi.h) |