共用方式為


SCSI_PASS_THROUGH_DIRECT 結構 (ntddscsi.h)

SCSI_PASS_THROUGH_DIRECT 結構會與IOCTL_SCSI_PASS_THROUGH_DIRECT要求搭配使用,以指示埠驅動程式將內嵌的SCSI命令傳送至目標裝置。

注意

未來可能會變更或無法使用 SCSI 埠驅動程式和 SCSI 迷你埠驅動程式模型。 相反地,我們建議使用 Storport 驅動程式Storport 迷你埠 驅動程式模型。

語法

typedef struct _SCSI_PASS_THROUGH_DIRECT {
  USHORT Length;
  UCHAR  ScsiStatus;
  UCHAR  PathId;
  UCHAR  TargetId;
  UCHAR  Lun;
  UCHAR  CdbLength;
  UCHAR  SenseInfoLength;
  UCHAR  DataIn;
  ULONG  DataTransferLength;
  ULONG  TimeOutValue;
  PVOID  DataBuffer;
  ULONG  SenseInfoOffset;
  UCHAR  Cdb[16];
} SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;

成員

Length

包含 sizeof (SCSI_PASS_THROUGH_DIRECT) 的值。

ScsiStatus

報告 HBA 或目標裝置所傳回的 SCSI 狀態。

PathId

指出要求的 SCSI 埠或總線。

TargetId

指出總線上的目標控制器或裝置。

Lun

指出裝置的邏輯單元編號。

CdbLength

指出 SCSI 命令描述元區塊的位元組大小。

SenseInfoLength

表示要求感知緩衝區的位元組大小。

DataIn

指出 SCSI 命令是否會讀取或寫入數據。 此欄位必須有三個值之一:

數據傳輸類型 意義
SCSI_IOCTL_DATA_IN 從裝置讀取數據。
SCSI_IOCTL_DATA_OUT 將數據寫入裝置。
SCSI_IOCTL_DATA_UNSPECIFIED 未傳輸任何數據。

DataTransferLength

指出數據緩衝區位元組的大小。 許多裝置會傳輸預先定義長度的數據區塊。 DataTransferLength 中的值必須是裝置所指定之預先定義最小長度的整數倍數。 如果發生下限,迷你埠驅動程序必須將此成員更新為實際傳輸的位元元組數目。

TimeOutValue

指出要求可以在OS特定埠驅動程式視為逾時之前的秒內執行間隔。

DataBuffer

資料緩衝區的指標。

SenseInfoOffset

包含從這個結構開頭到要求感知緩衝區的位移。

Cdb[16]

指定要傳送至目標裝置的SCSI命令描述元區塊。

備註

SCSI_PASS_THROUGH_DIRECT 結構會與 IOCTL_SCSI_PASS_THROUGH_DIRECT 搭配使用。 使用此要求時,系統會鎖定用戶記憶體中的緩衝區,而裝置會直接存取此記憶體。 如需此裝置控制要求的雙緩衝對應項,請參閱 IOCTL_SCSI_PASS_THROUGHSCSI_PASS_THROUGH

SCSI_PASS_THROUGH_DIRECT的成員大致對應至 SCSI_REQUEST_BLOCK 結構的成員。 DataIn 成員的值會對應至指派給 SCSI_REQUEST_BLOCK 之 SrbFlags 成員的SCSI_IOCTL_DATA_IN、SCSI_IOCTL_DATA_OUT和SCSI_IOCTL_DATA_UNSPECIFIED旗標。

規格需求

需求
標頭 ntddscsi.h (包含 Ntddscsi.h)

另請參閱

IOCTL_SCSI_PASS_THROUGH

IOCTL_SCSI_PASS_THROUGH_DIRECT

SCSI_PASS_THROUGH

SCSI_REQUEST_BLOCK