(storport.h) PORT_CONFIGURATION_INFORMATION 结构

PORT_CONFIGURATION_INFORMATION 包含主机总线适配器 (HBA) 的配置信息。

语法

typedef struct _PORT_CONFIGURATION_INFORMATION {
  ULONG                                  Length;
  ULONG                                  SystemIoBusNumber;
  INTERFACE_TYPE                         AdapterInterfaceType;
  ULONG                                  BusInterruptLevel;
  ULONG                                  BusInterruptVector;
  KINTERRUPT_MODE                        InterruptMode;
  ULONG                                  MaximumTransferLength;
  ULONG                                  NumberOfPhysicalBreaks;
  ULONG                                  DmaChannel;
  ULONG                                  DmaPort;
  DMA_WIDTH                              DmaWidth;
  DMA_SPEED                              DmaSpeed;
  ULONG                                  AlignmentMask;
  ULONG                                  NumberOfAccessRanges;
  ACCESS_RANGE( )                          *AccessRanges[];
  PVOID                                  MiniportDumpData;
  PVOID                                  Reserved;
  UCHAR                                  NumberOfBuses;
  CCHAR                                  InitiatorBusId[8];
  BOOLEAN                                ScatterGather;
  BOOLEAN                                Master;
  BOOLEAN                                CachesData;
  BOOLEAN                                AdapterScansDown;
  BOOLEAN                                AtdiskPrimaryClaimed;
  BOOLEAN                                AtdiskSecondaryClaimed;
  BOOLEAN                                Dma32BitAddresses;
  BOOLEAN                                DemandMode;
  UCHAR                                  MapBuffers;
  BOOLEAN                                NeedPhysicalAddresses;
  BOOLEAN                                TaggedQueuing;
  BOOLEAN                                AutoRequestSense;
  BOOLEAN                                MultipleRequestPerLu;
  BOOLEAN                                ReceiveEvent;
  BOOLEAN                                RealModeInitialized;
  BOOLEAN                                BufferAccessScsiPortControlled;
  UCHAR                                  MaximumNumberOfTargets;
  UCHAR                                  SrbType;
  UCHAR                                  AddressType;
  UCHAR                                  ReservedUchars[2];
  ULONG                                  SlotNumber;
  ULONG                                  BusInterruptLevel2;
  ULONG                                  BusInterruptVector2;
  KINTERRUPT_MODE                        InterruptMode2;
  ULONG                                  DmaChannel2;
  ULONG                                  DmaPort2;
  DMA_WIDTH                              DmaWidth2;
  DMA_SPEED                              DmaSpeed2;
  ULONG                                  DeviceExtensionSize;
  ULONG                                  SpecificLuExtensionSize;
  ULONG                                  SrbExtensionSize;
  UCHAR                                  Dma64BitAddresses;
  BOOLEAN                                ResetTargetSupported;
  UCHAR                                  MaximumNumberOfLogicalUnits;
  BOOLEAN                                WmiDataProvider;
  STOR_SYNCHRONIZATION_MODEL             SynchronizationModel;
  PHW_MESSAGE_SIGNALED_INTERRUPT_ROUTINE HwMSInterruptRoutine;
  INTERRUPT_SYNCHRONIZATION_MODE         InterruptSynchronizationMode;
  MEMORY_REGION                          DumpRegion;
  ULONG                                  RequestedDumpBufferSize;
  BOOLEAN                                VirtualDevice;
  UCHAR                                  DumpMode;
  UCHAR                                  DmaAddressWidth;
  ULONG                                  ExtendedFlags1;
  ULONG                                  MaxNumberOfIO;
  ULONG                                  MaxIOsPerLun;
  ULONG                                  InitialLunQueueDepth;
  ULONG                                  BusResetHoldTime;
  ULONG                                  FeatureSupport;
} PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION;

成员

Length

PORT_CONFIGURATION_INFORMATION结构的大小(以字节为单位)。 此成员由 Storport 驱动程序初始化,还充当结构版本。

SystemIoBusNumber

系统分配的 HBA 连接到的 I/O 总线的编号。 微型端口驱动程序不得修改此成员。 其值是系统分配的,因为平台可能有多个指定 AdapterInterfaceType 的 I/O 总线。

AdapterInterfaceType

I/O 总线接口。 Storport 将此成员初始化为 HW_INITIALIZATION_DATA 结构中微型端口驱动程序指定的值。 微型端口驱动程序不得修改此成员。

BusInterruptLevel

总线相对中断请求级别。 Storport 不对 HBA 的中断使用情况做出任何假设,因此默认值为零。 Storport 初始化此成员,微型端口驱动程序不得对其进行修改。

BusInterruptVector

HBA 返回的总线相对向量。 Storport 不对 HBA 的中断使用情况做出任何假设,因此默认值为零。 此成员与为其 HBA 设置 BusInterruptLevel 成员的驱动程序无关。 它与使用中断向量(例如 PCIBus)的 I/O 总线类型上的 HBA 相关。 Storport 初始化此成员,微型端口驱动程序不得对其进行修改。

InterruptMode

指定 HBA 是使用 LevelSensitive 还是 闩锁 (有时称为“边缘触发”) 中断。 Storport 将此成员初始化为总线和设备的适当值,例如 PCIBusLevelSensitive。 Storport 初始化此成员,微型端口驱动程序不得对其进行修改。

MaximumTransferLength

HBA 在单个传输操作中可以传输的最大字节数。 默认情况下,此成员的值SP_UNINITIALIZED_VALUE,这表示最大传输大小不受限制。 如果 HBA 具有更有限的传输支持,微型端口驱动程序必须根据 HBA 的传输容量重置此成员。 如果微型端口驱动程序的 HwStorInterrupt 例程无法禁用 HBA 上的中断,则可以在驱动程序开发期间调整此成员,以确保在该微型端口驱动程序的 ISR 中花费的时间不会降低整体系统性能。

NumberOfPhysicalBreaks

存储适配器可以在单个传输中管理的最大物理页数 (换句话说,即其散点/收集支持范围) 。 默认情况下,此成员的值0x11。 微型端口驱动程序必须根据存储适配器的功能重置此成员。

DmaChannel

从属 HBA 使用的 DMA 通道。 默认情况下,此成员的值SP_UNINITIALIZED_VALUE。 Storport 初始化此成员,微型端口驱动程序不得对其进行修改。

DmaPort

从属 HBA 使用的 DMA 端口。 默认情况下,此成员的值SP_UNINITIALIZED_VALUE。 Storport 初始化此成员,微型端口驱动程序不得对其进行修改。

DmaWidth

如果 HBA 使用 DMA,则 DMA 传输的宽度。 默认情况下,此成员的值为零。 Storport 初始化此成员,微型端口驱动程序不得对其进行修改。

DmaSpeed

Eisa HBA 的 DMA 数据传输速度。 Storport 初始化此成员,微型端口驱动程序不得对其进行修改。

AlignmentMask

指示 HBA 对传输操作所需的缓冲区的对齐限制的掩码。 一些示例有效掩码值是 0 (字节对齐) 、1 个 (字) 对齐、3 (DWORD 对齐) 和 7 (双 DWORD 对齐) 。 如果 HBA 支持散点/收集,微型端口驱动程序应设置此掩码。 wdm.h 中定义了以下允许的对齐掩码值:

含义
FILE_BYTE_ALIGNMENT (0x00000000) 数据是字节对齐的, (设备) 没有对齐要求
FILE_WORD_ALIGNMENT (0x00000001) 数据必须在 2 字节边界上对齐。
FILE_LONG_ALIGNMENT (0x00000003) 数据必须在 4 字节边界上对齐。
FILE_QUAD_ALIGNMENT (0x00000007) 数据必须在 8 字节边界上对齐。
FILE_OCTA_ALIGNMENT (0x0000000f) 数据必须在 16 字节边界上对齐。
FILE_32_BYTE_ALIGNMENT (0x0000001f) 数据必须在 32 字节边界上对齐。
FILE_64_BYTE_ALIGNMENT (0x0000003f) 数据必须在 64 字节边界上对齐。
FILE_128_BYTE_ALIGNMENT (0x0000007f) 数据必须在 128 字节边界上对齐。
FILE_256_BYTE_ALIGNMENT (0x000000ff) 数据必须在 256 字节边界上对齐。
FILE_512_BYTE_ALIGNMENT (0x000001ff) 数据必须在 512 字节边界上对齐。

NumberOfAccessRanges

指定数组中 AccessRanges 元素的数目。

AccessRanges

指向 ACCESS_RANGE类型元素数组的指针。 Storport 为访问范围分配内存并初始化此成员。 微型端口驱动程序不得修改此成员。

MiniportDumpData

指向故障转储或休眠期间使用的转储上下文的指针。

Reserved

保留供系统使用 (预Windows 8) 。

NumberOfBuses

适配器控制的总线数。 默认情况下,此成员的值为零。 此成员的最大值为 SCSI_MAXIMUM_BUSES_PER_ADAPTER。 此成员从 Windows 8 开始可用。

InitiatorBusId[8]

发起程序总线 ID。 如果输入 InitiatorBusId[0] 的值SP_UNINITIALIZED_VALUE,则如果微型端口驱动程序不需要使用通过查询 HBA 确定的特定值 () ,则微型端口驱动程序可以分配默认值。 否则,微型端口驱动程序应尽可能使用端口驱动程序分配的任何非零值。 通常,此值由 为 MaximumNumberOfTargets 设置的值绑定。

ScatterGather

如果 为 TRUE,则 HBA 支持散点/收集。 Storport 将此成员初始化为 TRUE ,因为它的微型端口驱动程序必须支持散点/收集。 使用 Storport 的微型端口驱动程序不得修改此值。 (注意:在 Windows Server 2008 R2 和 Windows 7 之前的 Windows 版本中,此成员设置为 FALSE。在这种情况下,微型端口驱动程序必须将此成员设置为 TRUE。不将此成员设置为 TRUE 将导致 HBA 设备无法启动。)

Master

如果 为 TRUE,则 HBA 是主总线。 Storport 将此成员初始化为 TRUE ,因为它的微型端口驱动程序必须支持总线主控 DMA。 使用 Storport 的微型端口驱动程序不得修改此值。 (注意:在 Windows Server 2008 R2 和 Windows 7 之前的 Windows 版本中,此成员设置为 FALSE。在这种情况下,微型端口驱动程序必须将此成员设置为 TRUE。不将此成员设置为 TRUE 将导致 HBA 设备无法启动。)

CachesData

如果 为 TRUE,HBA 会在外围设备上缓存数据或保持缓存状态。 如果 为 FALSE,HBA 不会缓存数据,也不会在外围设备上保持缓存状态。 默认情况下,此成员的值为 FALSE。 如果此值重置为 TRUE,Storport 会在发生某些系统事件(例如文件系统缓存刷新)时通知微型端口驱动程序。

AdapterScansDown

Storport 忽略此成员。

AtdiskPrimaryClaimed

Storport 不使用此成员,其微型端口驱动程序不得对其进行设置。

AtdiskSecondaryClaimed

Storport 不使用此成员,其微型端口驱动程序不得对其进行设置。

Dma32BitAddresses

如果 为 TRUE,则 HBA 有 32 个地址行,并且可以访问物理地址大于 0x00FFFFFF 的内存。 Storport 将此成员初始化为 TRUE,因为它的微型端口驱动程序必须支持总线宽度 DMA。 微型端口驱动程序不得修改此值,因为如果未设置 Dma64BitAddresses 的值,则这是默认的 DMA 寻址。 注意:如果设备硬件仅支持 32 位地址,则必须将 Dma64BitAddresses 设置为 0。

DemandMode

指示是否应针对需求模式而不是单周期操作对系统 DMA 控制器进行编程。 Storport 将此成员初始化为 FALSE,因为它不支持从属模式 DMA。 微型端口驱动程序不得修改此值。

MapBuffers

指示 Storport 是否将 SRB 数据缓冲区地址映射到系统虚拟地址。 微型端口驱动程序将此成员设置为以下值之一,以控制 SRB 数据缓冲区地址的映射。

含义
STOR_MAP_NO_BUFFERS 仅为SRB_FUNCTION_IO_CONTROL和SRB_FUNCTION_WMI映射缓冲区。
STOR_MAP_ALL_BUFFERS 已过时。 此值与 STOR_MAP_NON_READ_WRITE_BUFFERS 具有相同的效果。
STOR_MAP_NON_READ_WRITE_BUFFERS 映射除读取和写入请求之外的所有 IO 的缓冲区。
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE 映射所有 IO(包括读取和写入请求)的缓冲区。 支持启动的微型端口必须处理长度PAGE_SIZE的读取或写入请求。 这些读取或写入请求必须始终成功完成。 在系统内存不足的情况下,Storport 可能无法映射缓冲区。 在这种情况下,SRB 中的 DataBuffer 成员将为 NULL。

NeedPhysicalAddresses

如果 为 TRUE,微型端口驱动程序必须根据 HBA 的要求将虚拟地址转换为物理地址。 Storport 将此成员初始化为 TRUE,因为它的微型端口驱动程序必须支持散点/收集列表。 微型端口不得修改此值。

TaggedQueuing

如果 为 TRUE,则 HBA 支持使用 SCSI 标记排队多个请求。 Storport 将此成员初始化为 TRUE ,因为它的微型端口驱动程序必须支持标记队列。 微型端口驱动程序不得修改此值。

AutoRequestSense

如果 为 TRUE,则 HBA 支持自动请求感知。 Storport 将此成员初始化为 TRUE ,因为它的微型端口驱动程序必须支持自动请求感知。 微型端口驱动程序不得修改此值。

MultipleRequestPerLu

如果 为 TRUE,则 HBA 支持每个逻辑单元的多个请求。 Storport 将此成员初始化为 TRUE ,因为它的微型端口驱动程序必须支持同时向逻辑单元发出的多个请求。 微型端口驱动程序不得修改此值。

ReceiveEvent

Storport 不使用此成员,其微型端口驱动程序不得对其进行设置。

RealModeInitialized

Storport 不使用此成员,其微型端口驱动程序不得对其进行设置。

BufferAccessScsiPortControlled

Storport 不使用此成员,其微型端口驱动程序不得对其进行设置。

MaximumNumberOfTargets

适配器可以控制的目标外设数。 默认情况下,此成员的值SCSI_MAXIMUM_TARGETS_PER_BUS。 如果 HBA 具有更有限的功能或更大的值,微型端口驱动程序可以将此成员重置为较小的值,这表明 HBA 具有扩展的总线功能。 此成员的最大值为 255。

SrbType

要发送到微型端口驱动程序的 SRB 的类型。 从 Windows 8 开始可用。 此值设置为以下值之一:

含义
SRB_TYPE_SCSI_REQUEST_BLOCK 微型端口驱动程序接收标准 SRB。
SRB_TYPE_STORAGE_REQUEST_BLOCK 微型端口驱动程序接收扩展的 SRB。

AddressType

在 Storport 和微型端口驱动程序之间使用的地址类型。 从 Windows 8 开始可用。 这可以设置为以下值:

含义
STORAGE_ADDRESS_TYPE_BTL8 总线、目标和 LUN (BTL) 8 位寻址。

ReservedUchars[2]

保留供系统使用 (预Windows 8) 。

SlotNumber

保留供 Storport 使用。 微型端口驱动程序不得修改此成员。

BusInterruptLevel2

保留供 Storport 使用。 微型端口驱动程序不得修改此成员。

BusInterruptVector2

保留供 Storport 使用。 微型端口驱动程序不得修改此成员。

InterruptMode2

保留供 Storport 使用。 微型端口驱动程序不得修改此成员。

DmaChannel2

保留供 Storport 使用。 微型端口驱动程序不得修改此成员。

DmaPort2

保留供 Storport 使用。 微型端口驱动程序不得修改此成员。

DmaWidth2

保留供 Storport 使用。 微型端口驱动程序不得修改此成员。

DmaSpeed2

保留供 Storport 使用。 微型端口驱动程序不得修改此成员。

DeviceExtensionSize

微型端口驱动程序为其每个适配器设备扩展所需的大小(以字节为单位)。 微型端口驱动程序使用其设备扩展作为驱动程序确定的 HBA 信息的存储。 操作系统特定的端口驱动程序在首次分配扩展时初始化每个设备扩展一次,并用零填充它。 在每次调用微型端口驱动程序时,它都会传递指向特定于 HBA 的设备扩展的指针。 给定的大小不包括任何微型端口驱动程序请求的每个逻辑单元存储。 每个逻辑单元存储的大小通过 SpecificLuExtensionSize 字段指定,本主题稍后将对此进行介绍。

Storport 不遵循 SCSIPort 的模型 (该模型会在适配器停止时重新初始化设备扩展,因此对 HwScsiFindAdapter 的 后续调用) 接收归零的设备扩展。 相反,Storport 仅在首次分配设备扩展时将其重置为零,因此只有给定适配器的第一次对 HwStorFindAdapter 的调用才会收到归零的设备扩展。 后续对 HwStorFindAdapter 和其他微型端口函数的调用将接收微型端口驱动程序上次修改的设备扩展。 这允许微型端口驱动程序保持有关即插即用 (PnP) 停止和重启之间的适配器状态的知识,可能使微型端口驱动程序能够优化其初始化过程。

SpecificLuExtensionSize

微型端口驱动程序处理大于 64K 的数据传输所需的每个逻辑单元存储(如果有)所需的字节大小。 Storport 将此成员初始化为 StorPortInitialize 例程中发送的 HW_INITIALIZATION_DATA 结构的同一成员中的值。

如果微型端口驱动程序不维护需要存储的每个 LU 信息,请将此成员设置为零。 此值基于以下假设:无论控制器实际支持什么,HBA 都能接收 32 位地址。 如果在 LUN 或 SRB 扩展中需要额外的空间来处理 64 位地址,则在将此值与 StorPortGetUncachedExtension 等例程一起使用之前,必须对其进行适当的调整。

SrbExtensionSize

微型端口驱动程序按请求存储(如果有)处理大于 64K 的数据传输所需的大小(以字节为单位)。 Storport 将此成员初始化为 StorPortInitialize 例程中发送的 HW_INITIALIZATION_DATA 结构的同一成员中的值。

在调用 StorPortGetUncachedExtension 之前设置此成员,以基于 NumberOfPhysicalBreaks 更改每个请求存储的大小。 如果微型端口驱动程序不维护需要存储的每个 SRB 信息,请将此成员设置为零。 此值基于以下假设:无论控制器实际支持什么,HBA 都能接收 32 位地址。 如果在 LUN 或 SRB 扩展中需要额外的空间来处理 64 位地址,则在将此值用于 ScsiPortGetUncachedExtension 等例程之前,必须对其进行适当的调整。

Dma64BitAddresses

如果设备硬件仅支持 32 位地址,则必须将 Dma64BitAddresses 设置为 0。 如果设备支持 64 位地址,则此字段指示 HBA 是否能够访问大于 4 GB 的地址。

需要 Storport 适配器才能支持总线宽度 DMA。 因此,在 64 位或 PAE 计算机上,Storport 将 Dma64BitAddresses 初始化为SCSI_DMA64_SYSTEM_SUPPORTED指示适配器可以访问整个地址范围。 当微型端口驱动程序检测到此值时,它们必须在同一成员中返回下表中的值之一,以向端口驱动程序指示微型端口驱动程序支持 64 位 DMA。 如果微型端口无法执行此操作,可能会严重降低适配器的性能。

含义
SCSI_DMA64_MINIPORT_SUPPORTED 微型端口驱动程序支持用于 I/O 传输的 64 位物理地址。
SCSI_DMA64_MINIPORT_FULL64BIT_SUPPORTED 微型端口驱动程序支持完整的 64 位寻址。 这表示 I/O 请求的物理地址 > 可能为 4GB。 未缓存的扩展 SenseInfo 和 Srb 扩展可能超过 4GB。 分配限制为 4GB 边界对齐,以防止它们跨越 4GB 边界。
SCSI_DMA64_MINIPORT_FULL64BIT_NO_BOUNDARY_REQ_SUPPORTED 微型端口驱动程序支持完整的 64 位寻址。 这表示 I/O 请求的物理地址 > 可能为 4GB。 未缓存的扩展 SenseInfo 和 Srb 扩展可能超过 4GB。 分配没有边界对齐要求。
SCSI_DMA64_MINIPORT_64BIT_ONE_4GB_SUPPORTED 微型端口驱动程序支持单个 4GB 区域中的 64 位寻址。 这表示 I/O 请求、未缓存的扩展、SenseInfo 和 Srb 扩展在单个 4GB 区域中的物理地址 > 可能为 4GB。

ResetTargetSupported

已过时。 请勿使用此成员。

MaximumNumberOfLogicalUnits

HBA 可以控制的每个目标的最大逻辑单元数。 默认情况下,此成员的值为SCSI_MAXIMUM_LOGICAL_UNITS。 如果 HBA 具有更有限的功能或更大的值,微型端口驱动程序可以将此成员重置为较小的值,这表示 HBA 具有扩展的功能。 此成员的最大值为SCSI_MAXIMUM_LUNS_PER_TARGET。

WmiDataProvider

如果 为 TRUE,微型端口驱动程序会响应 Windows Management Instrumentation (WMI) 请求。 Storport 将此成员初始化为 TRUE ,因为它的微型端口驱动程序必须支持 WMI。 此外,光纤通道适配器的微型端口驱动程序应通过 WMI 支持 SAN 管理 HBA API,而基于主机的 RAID 适配器的微型端口驱动程序需要支持 RAID 管理接口。

微型端口驱动程序不得修改此值。

SynchronizationModel

微型端口驱动程序支持的 I/O 同步模型。 可能的值如下:

含义
StorSynchronizeFullDuplex 微型端口支持全双工模式。
StorSynchronizeHalfDuplex 微型端口支持半双工模式。

HwMSInterruptRoutine

指向微型端口驱动程序的 HwMSInterruptRoutine 例程的指针,该例程是 HBA 的任何微型端口驱动程序所必需的,该驱动程序生成消息信号中断 (MSI) 。 如果 HBA 不生成 MSI,微型端口驱动程序将此成员设置为 NULL

InterruptSynchronizationMode

一个INTERRUPT_SYNCHRONIZATION_MODE值,该值指定中断同步模式。 中断同步模式确定端口驱动程序如何同步消息信号中断。

DumpRegion

MEMORY_REGION结构,描述微型端口驱动程序可以在故障转储或休眠期间使用的物理连续内存区域。

RequestedDumpBufferSize

要分配供转储/休眠期间使用的未缓存扩展的大小(以字节为单位)。

VirtualDevice

如果为 TRUE,则此设备后面没有实际硬件 (例如,没有 DMA 对象、中断、I/O 端口) 。 在某些情况下,当 Storport 支持“虚拟”微型端口而不是控制实际硬件的微型端口时,它的行为有所不同。

DumpMode

指示在转储模式下使用微型端口。 它可以具有以下值之一。

含义
DUMP_MODE_CRASH 转储模式下的微型端口用于故障转储。
DUMP_MODE_HIBER 转储模式下的微型端口用于休眠。
DUMP_MODE_MARK_MEMORY 转储模式下的微型端口用于标记所需内存。
DUMP_MODE_RESUME 转储模式下的微型端口用于从休眠状态恢复。

DmaAddressWidth

适配器的 DMA 地址的宽度。 提供此值时,微型端口必须在 FeatureSupport 中指定STOR_ADAPTER_DMA_ADDRESS_WIDTH_SPECIFIED。 指定的值必须 (0 <DmaAddressWidth<= 64) 。 此字段可以从 Windows 10 版本 2004 开始使用。

ExtendedFlags1

预留给系统使用。

MaxNumberOfIO

HBA 支持的最大未完成 I/O 操作数。 Storport 将默认值设置为 1000。 如果 HBA 不支持 1000 个未完成的 I/O 操作,微型端口应将此调整为适当的较小值。

如果 HBA 可以支持超过 1000 个未完成的 I/O 操作,则微型端口可以将此成员增加到适配器硬件支持的任何值。 若要允许超过 1000 个未完成的 I/O 操作,HBA 必须支持在 Dma64BitAddresses 字段中设置的以下 64 位 DMA 寻址方法之一:

  • SCSI_DMA64_MINIPORT_FULL64BIT_SUPPORTED
  • SCSI_DMA64_MINIPORT_FULL64BIT_NO_BOUNDARY_REQ_SUPPORTED
  • SCSI_DMA64_MINIPORT_64BIT_ONE_4GB_SUPPORTED

MaxIOsPerLun

LUN 上支持的最大 I/O 请求数。 Storport 会将此值设置为默认值 255。 如果 LUN 不支持 255 个未完成的 I/O 请求,微型端口应将此成员调整为相应的较小值。 此成员必须为 <= MaxNumberOfIO。 若要支持 MaxIOsPerLun> 255,SrbType 字段必须设置为 SRB_TYPE_STORAGE_REQUEST_BLOCK 从 Windows 8 开始可用。

InitialLunQueueDepth

初始 LUN I/O 队列深度。 对于物理微型端口,Storport 将其设置为默认值 20,对于虚拟微型端口,则设置为默认值 250。 此成员调整适配器上所有 LUN 的初始队列深度。 单个 LUN 的队列深度是通过调用 StorPortSetDeviceQueueDepth 设置的。 此成员通常设置为与 MaxIOsPerLun 相同的值。 从 Windows 8 开始可用。

BusResetHoldTime

检测到重置后暂停适配器的时间量(以微秒为单位)。 如果在重置总线后不需要等待时间,请将此值设置为 0。 从 Windows 8 开始可用。

FeatureSupport

为适配器请求的 Storport 功能。 从 Windows 8 开始可用。 微型端口驱动程序可以将此成员设置为以下任何值的按位掩码:

含义
STOR_ADAPTER_FEATURE_DEVICE_TELEMETRY 0x00000001 微型端口驱动程序支持存储设备遥测。
STOR_ADAPTER_FEATURE_STOP_UNIT_DURING_POWER_DOWN 0x00000002 微型端口请求在系统关闭期间接收 STOP_UNIT 命令。
STOR_ADAPTER_UNCACHED_EXTENSION_NUMA_NODE_PREFERRED 0x00000004 微型端口驱动程序希望从适配器 NUMA 节点分配 UncachedExtension。
STOR_ADAPTER_DMA_V3_PREFERRED 0x00000008 微型端口驱动程序倾向于将 DMA V3 内核 API 用于适配器。
STOR_ADAPTER_FEATURE_ABORT_COMMAND 0x00000010 微型端口驱动程序支持通过SRB_FUNCTION_ABORT_COMMAND中止未完成的命令的功能。
STOR_ADAPTER_FEATURE_RICH_TEMPERATURE_THRESHOLD 0x00000020 适配器支持比 SCSI SPC4 规范中定义的更丰富的温度阈值信息。
STOR_ADAPTER_DMA_ADDRESS_WIDTH_SPECIFIED 0x00000040 微型端口驱动程序在适配器的 DmaAddressWidth 中指定了 DMA 地址宽度。 此值可以从 Windows 10 版本 2004 开始使用。

注解

Storport 驱动程序分配和初始化此结构,尽可能多地提供特定于 HBA 的配置信息,并将该结构传递给微型端口驱动程序的 HwStorFindAdapter 例程。 Storport 不支持非 PnP 设备,因此 HwStorFindAdapter 不会搜索适配器。 其主要功能是初始化 PORT_CONFIGURATION_INFORMATION

要求

要求
Header storport.h (包括 Srb.h、Storport.h、Strmini.h)

另请参阅

ACCESS_RANGE

HW_INITIALIZATION_DATA

HwMSInterruptRoutine

HwStorFindAdapter

HwStorInterrupt

INTERRUPT_SYNCHRONIZATION_MODE

MEMORY_REGION

StorPortGetUncachedExtension

StorPortInitialize

StorPortSetDeviceQueueDepth