共用方式為


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)

另請參閱

IOCTL_SCSI_PASS_THROUGH

IOCTL_SCSI_PASS_THROUGH_EX

SCSI_PASS_THROUGH