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_EX 和 SCSI_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