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