SCSI_PASS_THROUGH_DIRECT構造体 (ntddscsi.h)

SCSI_PASS_THROUGH_DIRECT構造体は、埋め込み SCSI コマンドをターゲット デバイスに送信するようにポート ドライバーに指示するIOCTL_SCSI_PASS_THROUGH_DIRECT要求と組み合わせて使用されます。

注意

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 コマンドがデータの読み取りまたは書き込みを行うかどうかを示します。 このフィールドには、次の 3 つの値のいずれかが必要です。

データ転送の種類 意味
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フラグに対応します。

要件

要件
Header ntddscsi.h (Ntddscsi.h を含む)

こちらもご覧ください

IOCTL_SCSI_PASS_THROUGH

IOCTL_SCSI_PASS_THROUGH_DIRECT

SCSI_PASS_THROUGH

SCSI_REQUEST_BLOCK