SCSI_ADAPTER_CONTROL_TYPE 枚举 (storport.h)

SCSI_ADAPTER_CONTROL_TYPE 枚举包含适配器控制操作,其中每个控件类型都会由微型端口驱动程序启动对适配器的操作。 Storport 在调用微型端口的 HwStorAdapterControl 例程时指定控件类型。

语法

typedef enum _SCSI_ADAPTER_CONTROL_TYPE {
  ScsiQuerySupportedControlTypes,
  ScsiStopAdapter,
  ScsiRestartAdapter,
  ScsiSetBootConfig,
  ScsiSetRunningConfig,
  ScsiPowerSettingNotification,
  ScsiAdapterPower,
  ScsiAdapterPoFxPowerRequired,
  ScsiAdapterPoFxPowerActive,
  ScsiAdapterPoFxPowerSetFState,
  ScsiAdapterPoFxPowerControl,
  ScsiAdapterPrepareForBusReScan,
  ScsiAdapterSystemPowerHints,
  ScsiAdapterFilterResourceRequirements,
  ScsiAdapterPoFxMaxOperationalPower,
  ScsiAdapterPoFxSetPerfState,
  ScsiAdapterSurpriseRemoval,
  ScsiAdapterSerialNumber,
  ScsiAdapterCryptoOperation,
  ScsiAdapterQueryFruId,
  ScsiAdapterSetEventLogging,
  ScsiAdapterReportInternalData,
  ScsiAdapterResetBusSynchronous,
  ScsiAdapterPostHwInitialize,
  ScsiAdapterPrepareEarlyDumpData,
  ScsiAdapterRestoreEarlyDumpData,
  ScsiAdapterKsrPowerDown,
  ScsiAdapterPreparePLDR,
  ScsiNvmeofAdapterOperation,
  ScsiAdapterControlMax,
  MakeAdapterControlTypeSizeOfUlong
} SCSI_ADAPTER_CONTROL_TYPE, *PSCSI_ADAPTER_CONTROL_TYPE;

常量

 
ScsiQuerySupportedControlTypes
报告微型端口驱动程序实现的适配器控制操作。 微型端口必须支持此控件类型。

Storport 驱动程序使用此控件类型和参数调用 HwStorAdapterControl ,这些 控件 在 HBA 已初始化之后,但在第一个 I/O 之前指向 SCSI_SUPPORTED_CONTROL_TYPE_LIST 结构。

微型端口驱动程序使用它支持的操作填充 SCSI_SUPPORTED_CONTROL_TYPE_LIST 结构。 HwStorAdapterControl 从此调用返回后,Storport 驱动程序仅为微型端口支持的操作调用微型端口驱动程序的 HwStorAdapterControl
ScsiStopAdapter
关闭 HBA。 微型端口必须支持此控件类型。

Storport 驱动程序调用 HwStorAdapterControl ,当 HBA 已从系统中删除、停止资源重新配置、关闭电源管理或以其他方式重新配置或禁用 HBA 时,此控件类型 (和 参数 设置为 NULL) 。 Storport 确保没有未完成的请求,并在调用此例程之前向微型端口驱动程序发出SRB_FUNCTION_FLUSH请求。

微型端口驱动程序禁用其 HBA 上的中断,停止所有处理, (包括不受 Storport 驱动程序不知道的中断或处理的后台处理,例如重建容错卷) ,将任何剩余缓存的数据刷新到永久性存储,并将 HBA 置于可重新初始化或重新启动它的状态。

微型端口驱动程序在停止其 HBA 时不应释放其资源。 如果删除或停止 HBA 以重新配置 PnP 资源,则 Storport 驱动程序将代表微型端口驱动程序释放资源。 如果关闭 HBA 进行电源管理,则会保留微型端口驱动程序的资源,以便可以重启 HBA。

HwStorAdapterControl 从停止 HBA 返回后,代表 HBA 的微型端口驱动程序分配的任何数据结构都应被视为无效,直到要求微型端口驱动程序重启。

请注意,Storport 可能会调用 HwStorAdapterControl 以在 HBA 已从系统物理删除后停止适配器,因此微型端口驱动程序的 HwStorAdapterControl 例程不得执行任何需要 HBA 在停止 HBA 时物理存在的操作。

在 PnP 管理器请求启动 HBA 之前,不会为 HBA 再次调用微型端口驱动程序, 在这种情况下,Storport 驱动程序 (通过调用其 HwStorAdapterControlHwStorInitialize 例程重新) 初始化,或者为电源管理而停止的 HBA 已启动,在这种情况下,Storport 驱动程序使用 ScsiRestartAdapter 调用微型端口驱动程序的 HwStorAdapterControl 例程或者,如果微型端口驱动程序未实现该控件类型,则重复 HBA 的初始化序列。
ScsiRestartAdapter
重新初始化 HBA。 微型端口必须支持此控件类型。

Storport 驱动程序调用 HwStorAdapterControl ,并且此控件类型 (和 Parameters 设置为 NULL) 来启动为电源管理而关闭的 HBA。 以前分配给微型端口驱动程序的所有资源仍然可用,并且其设备扩展和逻辑单元扩展(如果有)保持不变。

微型端口驱动程序执行与其 HwStorInitialize 例程相同的操作,例如设置 HBA 的寄存器及其初始状态(如果有)。

当控件类型为 ScsiSetRunningConfig 时,微型端口驱动程序不得调用只能从 HwStorFindAdapterHwStorAdapterControl 调用的例程,例如 StorPortGetBusDataStorPortSetBusDataByOffset。 如果微型端口驱动程序必须调用此类例程来重启其 HBA,则它还必须实现 ScsiSetRunningConfig

如果微型端口驱动程序未实现 ScsiRestartAdapter,Storport 驱动程序将调用微型端口驱动程序的 HwStorFindAdapterHwStorInitialize 例程。 但是,由于此类例程可能会执行重启 HBA 不需要的检测工作,因此此类微型端口驱动程序不会像实现 ScsiRestartAdapter 的微型端口驱动程序那样快速启动其 HBA。
ScsiSetBootConfig
还原 HBA 上 BIOS 可能需要重新启动的任何设置。 Storport 驱动程序使用 ScsiStopAdapter 调用此例程后, (调用HwStorAdapterControl,参数设置为 NULL) 。

如果微型端口驱动程序必须在系统重新启动之前调用 StorPortGetBusDataStorPortSetBusDataByOffset,则必须实现 ScsiSetBootConfig
ScsiSetRunningConfig
还原 HBA 上微型端口驱动程序在系统运行时可能需要控制 HBA 的任何设置。 如果微型端口驱动程序实现该控件类型,Storport 驱动程序调用 HwStorAdapterControl ,并将此控件类型 (和 Parameters 设置为 NULL) ,然后通过 ScsiRestartAdapter 调用此例程。

当 Storport 驱动程序进行此调用时,HBA 的中断尚未连接,因此微型端口驱动程序必须注意不要生成中断。

如果微型端口驱动程序必须调用 StorPortGetBusDataStorPortSetBusDataByOffset 以将相应的运行配置还原到 HBA,则它必须实现 ScsiSetRunningConfig,然后才能重新启动它。
ScsiPowerSettingNotification
已注册电源设置更改的通知。 如果电源设置发生更改,Storport 驱动程序使用此控件类型和参数调用 HwStorAdapterControl ,这些 控件 类型指向 STOR_POWER_SETTING_INFO 结构。 微型端口通过调用 StorPortSetPowerSettingNotificationGuids 来注册电源设置通知,其中包含表示相关电源更改事件的 GUID 列表。 此控件类型在 Windows 8 及更高版本中有效。
ScsiAdapterPower
报告适配器的开机或关机状态。 Storport 驱动程序调用 HwStorAdapterControl ,该控件类型和 参数 指向 STOR_ADAPTER_CONTROL_POWER 结构。 如果微型端口支持此控件类型,则它不会收到包含 SRB_FUNCTION_POWER 的存储请求块,并且不会使用 ScsiStopAdapter 控件类型调用 HwStorAdapterControl 此控件类型在 Windows 8 及更高版本中有效。
ScsiAdapterPoFxPowerRequired
通知微型端口适配器组件是否需要电源。 Storport 驱动程序使用此控件类型和参数调用 HwStorAdapterControl,如果适配器组件需要电源,则该值为 TRUE;否则为 FALSE。此控件类型在 Windows 8 及更高版本中有效。
ScsiAdapterPoFxPowerActive
通知微型端口适配器组件是活动还是空闲。 Storport 驱动程序调用 HwStorAdapterControl ,该控件类型和 参数 指向 STOR_POFX_ACTIVE_CONTEXT 结构。 此控件类型在 Windows 8 及更高版本中有效。
ScsiAdapterPoFxPowerSetFState
通知微型端口将适配器组件设置为给定的 F 状态。 Storport 驱动程序使用此控件类型和参数调用 HwStorAdapterControl ,这些 控件 类型指向STOR_POFX_FSTATE_CONTEXT 结构。 此控件类型在 Windows 8 及更高版本中有效。
ScsiAdapterPoFxPowerControl
请求微型端口执行由电源引擎插件为适配器启动的专用电源控制操作, (PEP) 。 Storport 驱动程序调用 HwStorAdapterControl ,该控件类型和 参数 指向 STOR_POFX_POWER_CONTROL 结构。 此控件类型在 Windows 8 及更高版本中有效。
ScsiAdapterPrepareForBusReScan
通知微型端口为总线枚举准备适配器。 Storport 驱动程序调用 HwStorAdapterControl ,此控件类型 (, 参数 设置为 NULL) 。 微型端口应打开适配器和所有连接的设备,以允许总线枚举操作查找设备。 此控件类型在 Windows 8 及更高版本中有效。
ScsiAdapterSystemPowerHints
为微型端口提供系统电源提示。 Storport 驱动程序使用此控件类型和参数调用 HwStorAdapterControl ,这些 控件 类型指向 STOR_SYSTEM_POWER_HINTS 结构。 此控件类型在 Windows 8 及更高版本中有效。
ScsiAdapterFilterResourceRequirements
筛选适配器所需的资源。 当 Storport 处理请求时,Storport 驱动程序调用 HwStorAdapterControl,该IRP_MN_FILTER_RESOURCE_REQUIREMENTS控件类型和参数指向STOR_FILTER_RESOURCE_REQUIREMENTS结构,并且微型端口在 HW_INITIALIZATION_DATA 的 FeatureSupport 字段中设置了STOR_FEATURE_ADAPTER_CONTROL_PRE_FINDADAPTER标志。 请注意,为此控件类型传入的 DeviceExtension 将取消初始化。

微型端口驱动程序应使用 STOR_FILTER_RESOURCE_REQUIREMENTS 结构更改或减少缓冲区中所述的资源。 此控件类型在 Windows 8.1 及更高版本中有效。
ScsiAdapterPoFxMaxOperationalPower
将最大操作功率值传达给微型端口。 Storport 驱动程序调用 HwStorAdapterControl ,并使用此控件类型和 参数 指向 STOR_MAX_OPERATIONAL_POWER 结构。 若要接收此控件,微型端口必须以前调用 StorPortPoFxSetPerfState ,以便向 PStateType = StorPoFxPerfStateTypeDiscreteCount> 1 注册性能集。

每个电源状态中的 “值 ”字段 (P 状态) 必须表示与其他 P 状态成正比的最大功率级别,并且将在微型端口的 P 状态报告的最大功率级别范围内(包括)。 微型端口必须确保它选择最大功率消耗小于或等于此参数中给定值的电源状态。
ScsiAdapterPoFxSetPerfState
通知微型端口通过调用 StorPortPoFxSetPerfState 请求的 P 状态转换的状态。 Storport 驱动程序调用 HwStorAdapterControl ,该控件类型和 参数 指向 STOR_POFX_PERF_STATE_CONTEXT 结构。

如果微型端口需要启动物理电源状态转换,则应等待 HwStorAdapterControl 回调,然后再执行此操作。 也就是说,微型端口必须首先调用 StorPortPoFxSetPerfState ,以表明其进行 P 状态转换的意图。 然后,Storport 将调用微型端口的 HwStorAdapterControl 回调,此时微型端口可以执行与 P 状态转换 (相关的任何操作,例如) 更改设备的物理电源状态。
ScsiAdapterSurpriseRemoval
通知微型端口该单元已被意外移除。 Storport 驱动程序调用 HwStorAdapterControl ,此控件类型 (, 参数 设置为 NULL) 。
ScsiAdapterSerialNumber
请求微型端口检索适配器的序列号。 Storport 驱动程序使用此控件类型和参数调用 HwStorAdapterControl ,这些 控件 类型指向 STOR_SERIAL_NUMBER 结构。
ScsiAdapterCryptoOperation
预留给系统使用。 通知微型端口执行加密操作。 Storport 使用它调用 HwStorAdapterControl参数 指向 STOR_CRYPTO_OPERATION
ScsiAdapterQueryFruId
从 Windows 10 版本 21H1 开始可用。 (适配器的 FRU) 查询故障更换单元的 ID。 当使用 StorageFruIdProperty 属性 ID 处理 [IOCTL_STORAGE_QUERY_PROPERTY]ni-ntddstor-ioctl_storage_query_property.md 时,Storport 使用它调用 HwStorAdapterControl参数指向) STOR_FRU_ID_DESCRIPTION结构。

仅当微型端口之前在其 HwFindAdapter 例程中也调用 StorPortSetFeatureList 并指定 StorportFeatureFruIdAdapterControl 时,Storport 才会发送此控件。
ScsiAdapterSetEventLogging
从 Windows 10 版本 21H1 开始可用。 通知微型端口是启用还是禁用了适配器的特定事件通道。 然后,微型端口应仅当启用相应的通道时调用 API 来记录适配器的事件。 如果微型端口支持此控件类型,则 Storport 使用它调用 HwStorAdapterControl参数 指向 STOR_SET_EVENT_LOGGING 结构。

仅当微型端口之前在其 HwFindAdapter 例程中也调用 StorPortSetFeatureList 并指定 StorportFeatureFruIdAdapterControl 时,Storport 才会发送此控件。
ScsiAdapterReportInternalData
预留给系统使用。 从 Windows 11 版本 22H2 开始可用。

仅当微型端口之前在其 HwFindAdapter 例程中也调用 StorPortSetFeatureList 并指定了 ScsiAdapterReportInternalData 时,Storport 才发送此控件。
ScsiAdapterResetBusSynchronous
从 Windows 11 版本 22H2 开始可用。 Storport 在处理IOCTL_STORAGE_DEVICE_RESET期间发送此控件。 微型端口驱动程序应像处理 HwResetBus 回调例程中一样处理此控件,并且应返回SCSI_ADAPTER_CONTROL_STATUS。

仅当微型端口之前在其 HwFindAdapter 例程中也调用 StorPortSetFeatureList 并指定 StorportFeatureResetBusSynchronous 时,Storport 才发送此控件。
ScsiAdapterPostHwInitialize
预留给系统使用。 从 Windows 11 版本 22H2 开始可用。

仅当微型端口之前在其 HwFindAdapter 例程中也调用 StorPortSetFeatureList 并指定 StorportFeaturePostHwInitialize 时,Storport 才发送此控件。
ScsiAdapterPrepareEarlyDumpData
预留给系统使用。 从 Windows 11 版本 22H2 开始可用。

仅当微型端口之前在其 HwFindAdapter 例程中调用 StorPortSetFeatureList 并指定 StorportFeaturePrepareEarlyDumpData 时,Storport 才发送此控件。
ScsiAdapterRestoreEarlyDumpData
预留给系统使用。 从 Windows 11 版本 22H2 开始可用。

仅当微型端口之前在其 HwFindAdapter 例程中也调用 StorPortSetFeatureList 并指定 StorportFeatureRestoreEarlyDumpData 时,Storport 才发送此控件。
ScsiAdapterKsrPowerDown
保留以供内部使用。 请勿使用。
ScsiAdapterPreparePLDR
Storport 发送此控件以通知微型端口在调用 PLDR 之前执行必要的工作。 从 Windows 11 版本 24H2 开始可用。
ScsiNvmeofAdapterOperation
指示是否支持 ScsiNvmeofAdapterOperation。 从 Windows 11 版本 24H2 开始可用。
ScsiAdapterControlMax
最大控件类型值。
MakeAdapterControlTypeSizeOfUlong
使此枚举成为 ULONG 的大小。

注解

当 Storport 使用控件类型为 ScsiQuerySupportedControlTypes 调用微型端口的 HwStorAdapterControl 例程时,微型端口报告它支持的控件类型。 对于微型端口支持的那些控件类型,Storport 使用SCSI_ADAPTER_CONTROL_TYPE值调用 HwStorAdapterControl,以指示指定要由微型端口执行的适配器控制操作的控制操作。

要求

要求
最低受支持的客户端 Windows 8
标头 storport.h

另请参阅

HwStorAdapterControl