Storport 驱动程序支持例程

本页对系统提供的 Storport 驱动程序提供给微型端口的一些支持例程进行分类。 有关完整列表,请参阅 storport.h

有关 Storport 驱动程序微型端口例程的列表,请参阅 Storport 微型端口驱动程序例程

直接内存访问支持例程

Storport 驱动程序提供以下直接内存访问 (DMA) 支持例程。

例程所返回的值 说明
StorPortBuildScatterGatherList 为指定的数据缓冲区创建散点/收集列表。
StorPortGetScatterGatherList 检索指定 SCSI 请求块的关联散点/收集列表 (SRB) 。
StorPortPutScatterGatherList 释放与之前通过调用 StorPortBuildScatterGatherList 例程创建的散点/收集列表关联的任何资源。

常规支持例程

Storport 提供以下常规支持例程。

例程所返回的值 说明
StorPortDebugPrint 如果附加了调试器,则会将调试字符串打印到内核调试器。
StorPortEtwEvent2 将 Windows 事件跟踪 (ETW) 事件发布到存储跟踪通道。 微型端口可以记录两个常规用途 ETW 参数。 ETW 参数表示为两个名称-值对。
StorPortEtwEvent4 将 ETW 事件发布到存储跟踪通道。 微型端口可以记录四个常规用途 ETW 参数。 ETW 参数表示为四个名称/值对。
StorPortEtwEvent8 将 ETW 事件发布到存储跟踪通道。 微型端口可以记录八个常规用途 ETW 参数。 ETW 参数表示为八个名称/值对。
StorPortGetActivityIdSrb 检索与请求块关联的 ETW 活动 ID。
StorPortGetDeviceObjects 返回与适配器设备堆栈关联的设备对象。 将返回的设备对象是适配器的功能和物理设备对象,以及功能设备对象所附加到的设备对象。
StorPortGetSystemPortNumber 检索系统为存储适配器分配的端口号。
StorPortInitializeSListHead 初始化 Storport 托管的单独链接列表的头。
StorPortInterlockedFlushSList 从 Storport 托管的单独链接列表中删除所有项。 在多处理器系统上同步对列表的访问
StorPortInterlockedPopEntrySList 从 Storport 托管的单独链接列表的前面删除项。 对列表的访问在多处理器系统上同步。
StorPortInterlockedPushEntrySList 在 Storport 托管的单独链接列表的前面插入项。 对列表的访问在多处理器系统上同步。
StorPortInvokeAcpiMethod 为存储设备执行 ACPI 方法。
StorPortIsCurrentOsInstallationUpgrade 检查 Windows 的当前安装是否是以前版本的升级。
StorPortIsDeviceOperationAllowed 允许微型端口确定是否允许对特定设备管理类执行操作。
StorPortLogError 通知端口驱动程序发生了错误。
StorPortLogSystemEvent 为微型端口驱动程序提供对 Windows 内核事件设施功能的完全访问权限,使微型端口驱动程序能够创建在排查存储问题时真正有用的事件日志条目。 它为 StorPortLogError 提供了更好的替代方法。
StorPortQueryDepthSList 检索 Storport 托管的单独链接列表中的条目数。
StorPortQueryPerformanceCounter 查询并返回当前系统性能计数器值。
StorPortQuerySystemTime 获取当前系统时间。
StorPortRegistryRead 读取所指示设备和值的注册表数据。
StorPortRegistryReadAdapterKey 读取位于注册表中的硬件或设备注册表适配器密钥,网址为 HKLM/CurrentControlSet/Enum/<Instance path>/DeviceParameters/....
StorPortRegistryWriteAdapterKey 写入位于注册表中的硬件或设备注册表适配器密钥,网址为 HKLM/CurrentControlSet/Enum/<Instance path>/DeviceParameters/....
StorPortRegistryWrite 将指定缓冲区中包含的注册表数据从 ASCII 转换为 Unicode,然后将数据写入微型端口驱动程序的每个 HBA 存储区域。

I/O 请求处理支持例程

Storport 提供以下 I/O 请求处理支持例程。

例程所返回的值 说明
StorPortBusy 通知端口驱动程序适配器当前正忙,处理未完成的请求。
StorPortCompleteRequest 完成所有未完成的请求,将 SRB 状态值设置为 SrbStatus。
StorPortCompleteServiceIrp 当 Storport 虚拟微型端口驱动程序需要完成在其 HwStorProcessServiceRequest 回调例程中收到的请求时调用。
StorPortDeviceBusy 通知端口驱动程序指定的逻辑单元当前正忙,处理未完成的请求。
StorPortDeviceReady 通知端口驱动程序指示的逻辑单元已准备好处理新请求。
StorPortFreeWorker 释放以前由 StorPortInitializeWorker 例程分配的 Storport 工作项。
StorPortGetRequestInfo 检索与 SCSI 请求块关联的 IO 请求信息 (SRB) ,并在STOR_REQUEST_INFO结构中返回该信息。
StorPortInitializeWorker 创建在系统工作线程中运行的新 Storport 工作项。
StorPortQueueWorkItem 计划 Storport 工作项在系统工作线程的上下文中执行。
StorPortPause 将适配器暂停指定的时间段。
StorPortPauseDevice 在指定的时间段内暂停特定逻辑单元设备。
StorPortReady 通知端口驱动程序适配器不再繁忙。
StorPortResume 恢复暂停的适配器。
StorPortResumeDevice 恢复以前暂停的逻辑单元。

初始化支持例程

Storport 驱动程序提供以下初始化支持例程。

例程所返回的值 说明
StorPortEnablePassiveInitialization 使微型端口的 HwStorPassiveInitializeRoutine 回调例程能够在微型端口初始化期间PASSIVE_LEVEL执行。
StorPortGetActiveGroupCount 返回系统中存在的处理器组数。
StorPortGetActiveNodeCount 返回系统中存在的节点数。
StorPortGetBusData 检索初始化 HBA 所需的特定于总线的配置信息。
StorPortGetCurrentProcessorNumber 从内核中检索当前处理器编号。
StorPortGetGroupAffinity 构造请求组中活动处理器的掩码。
StorPortGetHighestNodeNumber 返回系统上可能的最大节点数。
StorPortGetLogicalProcessorRelationship 返回一个或多个指定类型的关系信息。 这些类型包括主机系统中的组、物理包和节点。 返回的信息包括由主机系统中的逻辑处理器组成的处理器关联掩码。 这些逻辑处理器共享指定的关系类型。
StorPortGetLogicalUnit 返回指向微型端口驱动程序的每逻辑单元存储区域的指针。
StorPortGetNodeAffinity 在请求的非统一内存访问 (NUMA) 节点中构造活动处理器的掩码。
StorPortGetStartIoPerfParams Places STARTIO_PERFORMANCE_PARAMETERS结构中给定 I/O 请求的性能参数。
StorPortInitialize 初始化端口驱动程序参数和扩展数据。 StorPortInitilize 还保存从微型端口驱动程序提供的适配器信息。
StorPortInitializePerfOpts 使用 PERF_CONFIGURATION_DATA 结构初始化微型端口驱动程序和 Storport 驱动程序支持的性能优化。
StorPortSetAdapterBusType 用于根据适配器的当前配置调整其 BusType。 使用此例程设置 BusType 可以替代微型端口 INF 中设置的全局属性,而无需重新安装驱动程序。 这对于 RAID 支持或支持具有不同总线类型的多个适配器等方案非常有用。
StorPortSetBusDataByOffset 写入特定于总线的配置信息。
StorPortSetDeviceQueueDepth 设置所指示设备的设备队列的最大深度。
StorPortSetPowerSettingNotificationGuids 使微型端口能够接收电源设置通知。 微型端口注册一个 GUID 数组,用于标识要接收其电源更改通知的电源设置。
StorPortSetUnitAttributes 向 Storport 驱动程序注册存储单元设备的电源属性。

中断支持例程

Storport 驱动程序提供以下中断支持例程。

例程所返回的值 说明
StorPortGetMSIInfo 检索指定消息 (MSI) 信息发出信号的中断消息。
StorPortSynchronizeAccess 提供对微型端口驱动程序设备扩展的同步访问。
StorPortInitializeDpc 初始化 StorPort 延迟过程调用 (DPC.)
StorPortIssueDpc 颁发 Storport DPC。
StorPortStallExecution 停止微型端口驱动程序。

锁定支持例程

Storport 驱动程序提供以下锁定支持例程。

例程所返回的值 说明
StorPortAcquireMSISpinLock 获取 (MSI) 与指定消息关联的旋转锁的消息信号中断。
StorPortAcquireSpinLock 获取指定的旋转锁。
StorPortReleaseMSISpinLock 为指定消息释放以前获取的 MSI 旋转锁。
StorPortReleaseSpinLock 释放 StorPortAcquireSpinLock 获取的旋转锁。

内存管理支持例程

Storport 驱动程序提供以下内存管理支持例程。

例程所返回的值 说明
StorPortAllocateContiguousMemorySpecifyCacheNode 分配一系列物理连续的非缓存、非分页内存。
StorPortAllocateMdl 分配 MDL 以描述给定的非分页池内存。
StorPortAllocatePool 分配一个非连续、非分页池内存块。
StorPortAllocateRegistryBuffer 分配一个缓冲区,微型端口可用于读取和写入注册表数据。
StorPortBuildMdlForNonPagedPool 汇报 MDL 来描述关联的非分页内存。
StorPortConvertUlongToPhysicalAddress 将无符号长地址转换为物理地址。
StorPortConvertPhysicalAddressToULong64 将物理地址转换为ULONG64值。
StorPortFreeMdl 释放 (MDL) 描述非分页池内存的内存描述符列表。
StorPortFreeContiguousMemorySpecifyCache 解除分配系统地址空间的非分页部分的一系列非缓存内存。
StorPortFreePool 释放以前通过调用 StorPortAllocatePool 例程分配的内存块。
StorPortFreeRegistryBuffer 释放为存储注册表数据分配的缓冲区。
StorPortGetDataInBufferMdl 返回与 SCSI 请求块的输入数据缓冲区关联的 MDL, (SRB) 。
StorPortGetDataInBufferScatterGatherList 返回与 SCSI 请求块的输入数据缓冲区关联的散点-收集列表 (SRB) 。
StorPortGetDataInBufferSystemAddress 返回 SCSI 请求块的输入数据缓冲区的系统地址 (SRB) 。
StorPortGetOriginalMdl 返回与给定 SRB 关联的 MDL。
StorPortGetVirtualAddress 获取映射到指示的物理地址的虚拟地址。
StorPortGetPhysicalAddress 将给定的虚拟地址范围转换为 DMA 操作的物理地址范围。
StorPortGetSystemAddress 返回系统空间中指定 SCSI 请求块的数据缓冲区的虚拟地址 (SRB) 。
StorPortGetUncachedExtension 分配由 CPU 和设备共享的未缓存公共缓冲区。
StorPortMarkDumpMemory 微型端口应标记用于转储文件或休眠文件的内存。 标记的内存将保留,并在从休眠操作恢复后保持有效。 要标记的内存由 调用 StorPortMarkDumpMemory 中的地址和范围长度指定。
StorPortMoveMemory 将内存从一个缓冲区复制到另一个缓冲区。

通知支持例程

Storport 驱动程序提供以下通知支持例程。

例程所返回的值 说明
StorPortAsyncNotificationDetected 通知 Storport 驱动程序存储设备状态更改事件。
StorPortNotification 通知 Storport 驱动程序某些事件和条件。
StorPortStateChangeDetected 通知 Storport 端口驱动程序逻辑单元号的状态更改 (LUN) 、主机总线适配器 (HBA) 端口或目标设备。

移植和注册 I/O 支持例程

Storport 驱动程序提供以下端口和注册 I/O 支持例程。

例程所返回的值 说明
StorPortGetDeviceBase 将 I/O 地址映射到系统地址空间。
StorPortFreeDeviceBase 释放由 StorPortGetDeviceBase 映射的一系列设备 I/O 内存。
StorPortReadPortBufferUchar 从指定的端口地址读取值
StorPortReadPortBufferUlong 从指定的端口地址读取值。
StorPortReadPortBufferUshort 从指定的端口地址读取值。
StorPortReadPortUchar 从指定的端口地址读取值
StorPortReadPortUlong 从指定的端口地址读取值。
StorPortReadPortUshort 从指定的端口地址读取值。
StorPortReadRegisterBufferUchar 从指定的寄存器地址读取值。
StorPortReadRegisterBufferUlong 从指定的寄存器地址读取值。
StorPortReadRegisterBufferUlong64 将指定的 64 位寄存器地址中的多个ULONG64值读入缓冲区。
StorPortReadRegisterBufferUshort 从指定的寄存器地址读取值。
StorPortReadRegisterUchar 从指定的寄存器地址读取值。
StorPortReadRegisterUlong 从指定的寄存器地址读取值。
StorPortReadRegisterUlong64 从指定的 64 位寄存器地址读取 64 位值。
StorPortReadRegisterUshort 从指定的寄存器地址读取值。
StorPortValidateRange 确定指定范围的 I/O 地址是否由另一个适配器使用。 此例程在 Windows NT 4.0 及更高版本的操作系统中已过时。
StorPortWritePortBufferUchar 将值写入指定的寄存器地址。
StorPortWritePortBufferUlong 将值写入指定的寄存器地址。
StorPortWritePortBufferUshort 将值写入指定的寄存器地址。
StorPortWritePortUchar 将值写入指定的寄存器地址。
StorPortWritePortUlong 将值写入指定的寄存器地址。
StorPortWritePortUshort 将值写入指定的寄存器地址。
StorPortWriteRegisterBufferUchar 将给定数量的无符号字节从缓冲区传输到 HBA。
StorPortWriteRegisterBufferUlong 将给定数量的 ULONG 值从缓冲区传输到 HBA。
StorPortWriteRegisterBufferUlong64 从指定的 64 位寄存器地址写入多个ULONG64值。
StorPortWriteRegisterBufferUshort 将给定数量的 USHORT 值从缓冲区传输到 HBA。
StorPortWriteRegisterUchar 将给定数量的字符值从缓冲区传输到指示的 HBA 寄存器地址。
StorPortWriteRegisterUlong 将 ULONG 值传输到指示的 HBA 寄存器地址。
StorPortWriteRegisterUlong64 将ULONG64值写入指定的寄存器地址。
StorPortWriteRegisterUshort 将 ULONG 值传输到指示的 HBA 寄存器地址。

运行时电源管理支持例程

Storport 驱动程序提供以下运行时电源管理支持例程。

例程所返回的值 说明
StorPortInitializePoFxPower 将存储设备注册到电源管理框架 (PoFx) 。
StorPortPoFxActivateComponent 递增存储设备的指定组件上的激活引用计数。
StorPortPoFxIdleComponent 递减存储设备的指定组件的激活引用计数。
StorPortPoFxPowerControl 将电源控制请求发送到电源管理框架, (PoFx) 转发到电源引擎插件 (PEP) 。
StorPortPoFxSetComponentLatency 指定在从空闲条件转换到指定存储设备组件中的活动条件时可以容忍的最大延迟。
StorPortPoFxSetComponentResidency 设置存储设备组件在组件进入空闲条件后可能保持空闲状态的估计时间。

计时器支持例程

Storport 驱动程序提供以下计时器支持例程。

例程所返回的值 说明
StorPortFreeTimer 释放以前由 StorPortInitializeTimer 例程创建的 Storport 计时器上下文对象。
StorPortInitializeTimer 创建 Storport 计时器上下文对象。
StorPortRequestTimer 为 Storport 计时器上下文对象计划回调事件。