次の方法で共有


SCSI_PASS_THROUGH_DIRECT_EX構造体 (ntddscsi.h)

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

この構造体のサイズ。 (SCSI_PASS_THROUGH_DIRECT_EX) の size をに設定します。

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