ntddscsi.h 标头

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

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

IOCTL

 
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

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

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

返回给定 SCSI 主机总线适配器上所有设备的 SCSI 查询数据, (HBA) 。
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 命令发送到目标设备,但存在以下限制:不允许使用多目标命令(如 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 命令发送到目标设备,但存在以下限制:不允许使用多目标命令(如 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 (es) 。

结构

 
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 结构来报告设备的耐力信息。

枚举

 
MP_STORAGE_DIAGNOSTIC_LEVEL

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

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