ntddscsi.h 标头

此标头由存储使用。 有关详细信息,请参阅:

ntddscsi.h 包含以下编程接口:

IOCTLs

 
IOCTL_ATA_PASS_THROUGH

允许应用程序将几乎所有 ATA 命令发送到目标设备,但存在以下限制:_If存在设备目标类型的类驱动程序,应用程序必须将请求发送到类驱动程序。
IOCTL_ATA_PASS_THROUGH_DIRECT

了解IOCTL_ATA_PASS_THROUGH_DIRECT如何允许应用程序将几乎所有 ATA 命令发送到目标设备。
IOCTL_MINIPORT_PROCESS_SERVICE_IRP

此 IOCTL 由用户模式应用程序或内核模式驱动程序使用,当虚拟微型端口发生兴趣时需要通知。
IOCTL_MINIPORT_SIGNATURE_ENDURANCE_INFO

IOCTL_MINIPORT_SIGNATURE_ENDURANCE_INFO是系统定义的签名,与IOCTL_SCSI_MINIPORT控制代码结合使用,以请求微型端口返回目标设备的耐力数据。
IOCTL_MINIPORT_SIGNATURE_SET_PROTOCOL

IOCTL_MINIPORT_SIGNATURE_SET_PROTOCOL是与IOCTL_SCSI_MINIPORT控制代码一起使用的签名,用于将特定于协议的数据发送到微型端口。
IOCTL_MPIO_PASS_THROUGH_PATH

此 I/O 控制代码允许应用程序或内核驱动程序将 SCSI 命令发送到指定的真实 LUN。
IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT

了解此 I/O 控制代码如何允许应用程序或内核驱动程序将 SCSI 命令发送到指定的真实 LUN。
IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT_EX

IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT_EX控制代码请求是IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT请求的扩展版本。 此请求支持双向数据传输,并允许命令数据块(CDB)> 16 字节。
IOCTL_MPIO_PASS_THROUGH_PATH_EX

IOCTL_MPIO_PASS_THROUGH_PATH_EX控制代码请求是IOCTL_MPIO_PASS_THROUGH_PATH请求的扩展版本。 此请求支持双向数据传输,并允许命令数据块(CDB)> 16 字节。
IOCTL_SCSI_GET_ADDRESS

返回地址信息,例如特定 SCSI 目标的目标 ID(TID)和逻辑单元号(LUN)。
IOCTL_SCSI_GET_CAPABILITIES

返回基础 SCSI HBA 的功能和限制。
IOCTL_SCSI_GET_INQUIRY_DATA

返回给定 SCSI 主机总线适配器(HBA)上所有设备的 SCSI 查询数据。
IOCTL_SCSI_MINIPORT

将特殊控制函数发送到特定于 HBA 的微型端口驱动程序。
IOCTL_SCSI_MINIPORT_DIAGNOSTIC

IOCTL_SCSI_MINIPORT_DIAGNOSTIC控制代码用于对微型端口执行诊断请求。
IOCTL_SCSI_MINIPORT_HYBRID

IOCTL_SCSI_MINIPORT_HYBRID控制代码将混合磁盘控制请求发送到特定于 HBA 的微型端口驱动程序。
IOCTL_SCSI_MINIPORT_NVCACHE

可以使用 DeviceIoControl 和 IOCTL_SCSI_MINIPORT 控制代码,通过用户模式应用程序代码调用此处定义的 NV 缓存管理操作。
IOCTL_SCSI_PASS_THROUGH

允许应用程序将几乎任何 SCSI 命令发送到目标设备,但不允许使用以下限制:不允许使用 MULTItarget 命令(如 COPY)。不支持双向数据传输操作。如果存在设备的目标类型的类驱动程序,则必须将请求发送到该类驱动程序。 因此,仅当连接到该 LU 的设备类型没有类驱动程序时,应用程序才能将此请求直接发送到目标逻辑单元(LU)的系统端口驱动程序。 在处理直通请求之前,系统端口驱动程序不会检查以确定设备是否已由类驱动程序声明。 因此,如果应用程序绕过已声明设备的类驱动程序并将该设备的直通请求直接发送到端口驱动程序,则类驱动程序和应用程序之间可能会发生控制设备的冲突。 如果传递请求发送到适配器设备对象,并且它源自用户模式并面向类驱动程序声明的 LU,则 Storport 将失败请求并STATUS_INVALID_DEVICE_REQUEST。 如果请求发送到 LU 设备对象、源自内核模式或面向未认领的 LU,则会将其传递到微型端口驱动程序。如果 CDB 可能需要基础微型端口驱动程序直接访问内存,则无法使用此请求。 如果调用方 CDB 可能需要直接访问内存,请改用IOCTL_SCSI_PASS_THROUGH_DIRECT。 应用程序不得尝试异步发送直通请求。 所有直通请求都必须是同步的。 应用程序不需要管理权限才能将直通请求发送到设备,但它们必须具有对设备的读/写访问权限。 调用应用程序创建 SCSI 命令描述符块,该块可以包括请求感知数据的请求(如果出现 CHECK CONDITION)。 IOCTL_SCSI_PASS_THROUGH是缓冲设备控制请求。 若要绕过系统内存中的缓冲,调用方应使用IOCTL_SCSI_PASS_THROUGH_DIRECT。 处理IOCTL_SCSI_PASS_THROUGH_DIRECT请求时,系统会锁定用户内存中的缓冲区,设备直接访问此内存。 此请求通常用于传输少量数据(<16K)。应用程序可以通过IRP_MJ_DEVICE_CONTROL请求发送此请求。存储类驱动程序将次要 IRP 编号设置为IRP_MN_SCSI_CLASS,以指示请求已由存储类驱动程序处理。
IOCTL_SCSI_PASS_THROUGH_DIRECT

允许应用程序将几乎任何 SCSI 命令发送到目标设备,但不允许使用以下限制:不允许使用 MULTItarget 命令(如 COPY)。不支持双向数据传输操作。如果存在设备的目标类型的类驱动程序,则必须将请求发送到该类驱动程序。 因此,仅当连接到该 LU 的设备类型没有类驱动程序时,应用程序才能将此请求直接发送到目标逻辑单元的系统端口驱动程序。如果输入 CDB 可能需要基础微型端口驱动程序直接访问内存,则必须发出此请求。调用应用程序创建 SCSI 命令描述符块,该块可以包括请求感知数据的请求(如果出现 CHECK CONDITION)。 如果 CDB 请求数据传输操作,调用方必须设置适配器设备对齐缓冲区,微型端口驱动程序可以从该缓冲区或该缓冲区直接传输数据。 此请求通常用于传输大量数据(>16K)。应用程序可以通过IRP_MJ_DEVICE_CONTROL请求发送此请求。 存储类驱动程序将次要 IRP 编号设置为IRP_MN_SCSI_CLASS,以指示请求已由存储类驱动程序处理。
IOCTL_SCSI_PASS_THROUGH_DIRECT_EX

IOCTL_SCSI_PASS_THROUGH_DIRECT_EX控制代码请求是IOCTL_SCSI_PASS_THROUGH_DIRECT请求的扩展版本。 此请求支持双向数据传输,并允许命令数据块(CDB)> 16 字节。
IOCTL_SCSI_PASS_THROUGH_EX

IOCTL_SCSI_PASS_THROUGH_EX控制代码请求是IOCTL_SCSI_PASS_THROUGH请求的扩展版本。 此请求支持双向数据传输,并允许命令数据块(CDB)> 16 字节。
IOCTL_SCSI_RESCAN_BUS

重新扫描公共汽车上的 LUN。

结构

 
ATA_PASS_THROUGH_DIRECT

ATA_PASS_THROUGH_DIRECT结构与IOCTL_ATA_PASS_THROUGH_DIRECT请求结合使用,以指示端口驱动程序将嵌入式 ATA 命令发送到目标设备。
ATA_PASS_THROUGH_EX

ATA_PASS_THROUGH_EX结构与IOCTL_ATA_PASS_THROUGH请求结合使用,以指示端口驱动程序将嵌入式 ATA 命令发送到目标设备。
HYBRID_INFORMATION

HYBRID_INFORMATION结构包含混合磁盘功能信息。
IO_SCSI_CAPABILITIES

IO_SCSI_CAPABILITIES结构与IOCTL_SCSI_GET_CAPABILITIES请求结合使用,以检索基础 SCSI 主机适配器的功能和限制。请注意,SCSI 端口驱动程序和 SCSI 微型端口驱动程序模型将来可能会更改或不可用。 相反,我们建议使用 Storport 驱动程序和 Storport 微型端口驱动程序模型。
MPIO_PASS_THROUGH_PATH

MPIO_PASS_THROUGH_PATH结构与IOCTL_MPIO_PASS_THROUGH_PATH请求一起使用,以指示端口驱动程序将嵌入式 SCSI 命令发送到目标设备。
MPIO_PASS_THROUGH_PATH_DIRECT

MPIO_PASS_THROUGH_PATH_DIRECT结构与IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT请求一起使用,以指示端口驱动程序将嵌入式 SCSI 命令发送到目标设备。
MPIO_PASS_THROUGH_PATH_DIRECT_EX

MPIO_PASS_THROUGH_PATH_DIRECT_EX结构与IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT_EX请求一起使用,以指示端口驱动程序将嵌入式 SCSI 命令发送到目标设备。
MPIO_PASS_THROUGH_PATH_EX

MPIO_PASS_THROUGH_PATH_EX结构与IOCTL_MPIO_PASS_THROUGH_PATH_EX请求一起使用,以指示端口驱动程序将嵌入式 SCSI 命令发送到目标设备。
NTSCSI_UNICODE_STRING

存储端口驱动程序可以使用NTSCSI_UNICODE_STRING结构来定义 Unicode 字符串。
NV_FEATURE_PARAMETER

NV_FEATURE_PARAMETER结构与IOCTL_SCSI_MINIPORT_NVCACHE请求结合使用,从设备获取 NV 缓存管理器功能支持信息。
NVCACHE_REQUEST_BLOCK

NVCACHE_REQUEST_BLOCK结构与IOCTL_SCSI_MINIPORT请求结合使用来管理混合硬盘(H-HDD)设备(例如,Microsoft ReadyDrive 技术)。
SCSI_ADAPTER_BUS_INFO

SCSI_ADAPTER_BUS_INFO结构与IOCTL_SCSI_GET_INQUIRY_DATA请求结合使用,以检索给定 SCSI 总线上所有设备的 SCSI 查询数据。
SCSI_ADDRESS

SCSI_ADDRESS结构与IOCTL_SCSI_GET_ADDRESS请求结合使用来检索地址信息,例如目标 ID(TID)和特定 SCSI 目标的逻辑单元号(LUN)。
SCSI_BUS_DATA

SCSI_BUS_DATA结构与IOCTL_SCSI_GET_INQUIRY_DATA请求和SCSI_ADAPTER_BUS_INFO结构结合使用,以检索给定 SCSI 总线上所有设备的 SCSI 查询数据。
SCSI_INQUIRY_DATA

SCSI_INQUIRY_DATA结构与IOCTL_SCSI_GET_INQUIRY_DATA请求结合使用,以检索给定 SCSI 总线上所有设备的 SCSI 查询数据。
SCSI_PASS_THROUGH

SCSI_PASS_THROUGH结构与IOCTL_SCSI_PASS_THROUGH请求结合使用,以指示端口驱动程序将嵌入式 SCSI 命令发送到目标设备。
SCSI_PASS_THROUGH_DIRECT

SCSI_PASS_THROUGH_DIRECT结构与IOCTL_SCSI_PASS_THROUGH_DIRECT请求结合使用,以指示端口驱动程序将嵌入式 SCSI 命令发送到目标设备。
SCSI_PASS_THROUGH_DIRECT_EX

SCSI_PASS_THROUGH_DIRECT_EX结构与IOCTL_SCSI_PASS_THROUGH_DIRECT_EX请求结合使用,以指示端口驱动程序将嵌入式 SCSI 命令发送到目标设备。
SCSI_PASS_THROUGH_EX

SCSI_PASS_THROUGH_EX结构与IOCTL_SCSI_PASS_THROUGH_EX请求结合使用,以指示端口驱动程序将嵌入式 SCSI 命令发送到目标设备。
SRB_IO_CONTROL

SRB_IO_CONTROL结构
STORAGE_DIAGNOSTIC_MP_REQUEST

描述对微型端口的诊断请求。 STORAGE_DIAGNOSTIC_MP_REQUEST结构在IOCTL_SCSI_MINIPORT_DIAGNOSTIC请求的输入/输出缓冲区中提供。
STORAGE_ENDURANCE_DATA_DESCRIPTOR

微型端口使用STORAGE_ENDURANCE_DATA_DESCRIPTOR向存储端口驱动程序报告设备的耐力信息。
STORAGE_ENDURANCE_INFO

微型端口使用 STORAGE_ENDURANCE_INFO 结构来报告设备的耐力信息。
STORAGE_FIRMWARE_SLOT_INFO

了解STORAGE_FIRMWARE_SLOT_INFO结构。

枚举

 
MP_STORAGE_DIAGNOSTIC_LEVEL

MP_STORAGE_DIAGNOSTIC_LEVEL枚举允许调用方控制提供程序应返回的数据类型。
MP_STORAGE_DIAGNOSTIC_TARGET_TYPE

MP_STORAGE_DIAGNOSTIC_TARGET_TYPE枚举指定存储诊断的目标类型。