共用方式為


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_EXSCSI_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

IOCTL_SCSI_PASS_THROUGH_DIRECT_EX

SCSI_PASS_THROUGH_DIRECT

STOR_ADDR_BTL8