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