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 计时器上下文对象计划回调事件。 |
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈