次の方法で共有


SCSI_PASS_THROUGH_EX 構造体 (ntddscsi.h)

SCSI_PASS_THROUGH_EX構造体は、埋め込み SCSI コマンドをターゲット デバイスに送信するようにポート ドライバーに指示するIOCTL_SCSI_PASS_THROUGH_EX要求と組み合わせて使用されます。 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 以降で使用できます。
Header ntddscsi.h (Ntddscsi.h を含む)

こちらもご覧ください

IOCTL_SCSI_PASS_THROUGH

IOCTL_SCSI_PASS_THROUGH_EX

SCSI_PASS_THROUGH