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 | 通知端口驱动程序发生错误。 |
StorPortLogTelemetry | 记录微型端口遥测事件,以帮助诊断或收集任何有用的信息。 |
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 回调例程中收到的请求时,由 Storport 虚拟微型端口驱动程序调用。 |
StorPortDeviceBusy | 通知端口驱动程序指定的逻辑单元当前正忙,正在处理未完成的请求。 |
StorPortDeviceReady | 通知端口驱动程序所指示的逻辑单元已准备好处理新请求。 |
StorPortFreeWorker | 释放以前由 StorPortInitializeWorker 例程分配的 Storport 工作项。 |
StorPortGetRequestInfo | 检索与 SCSI 请求块 (SRB) 关联的 IO 请求信息,并以 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 | 将给定 I/O 请求的性能参数置于 STARTIO_PERFORMANCE_PARAMETERS 结构中。 |
StorPortInitialize | 初始化端口驱动程序参数和扩展数据。 StorPortInitilize 还会保存微型端口驱动程序提供的适配器信息。 |
StorPortInitializePerfOpts | 使用 PERF_CONFIGURATION_DATA 结构初始化微型端口驱动程序和 Storport 驱动程序都支持的性能优化。 |
StorPortSetAdapterBusType | 用于根据适配器的当前配置调整其总线类型。 使用此例程设置 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 请求块 (SRB) 的输入数据缓冲区关联的 MDL。 |
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 | 将指定数量的 ULONG64 值从指定的 64 位寄存器地址读取到缓冲区中。 |
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 计时器上下文对象安排回调事件。 |