STOR_POFX_DEVICE_V3结构 (storport.h)
STOR_POFX_DEVICE_V3结构将存储设备的电源属性描述为电源管理框架 (PoFx) 。 此结构类似于 STOR_POFX_DEVICE 但允许调用方指定空闲超时值。
语法
typedef struct _STOR_POFX_DEVICE_V3 {
ULONG Version;
ULONG Size;
ULONG ComponentCount;
ULONG Flags;
union {
ULONG UnitMinIdleTimeoutInMS;
ULONG AdapterIdleTimeoutInMS;
};
ULONG MinimumPowerCyclePeriodInMS;
STOR_POFX_COMPONENT Components[ANYSIZE_ARRAY];
} STOR_POFX_DEVICE_V3, *PSTOR_POFX_DEVICE_V3;
成员
Version
此结构的版本号。 将此成员设置为 STOR_POFX_DEVICE_VERSION_V3。
Size
此结构的大小。 将此值设置为 STOR_POFX_DEVICE_V3_SIZE。
ComponentCount
Components 数组中的元素数。 将此成员设置为 1。 目前,存储适配器或逻辑单元仅支持单个组件。
Flags
设备电源状态功能标志。 微型端口设置一个或多个 PoFx 设备标志以启用或禁用电源状态功能。 标志 是以下各项的按位 OR 组合。
标志值 | 含义 |
---|---|
STOR_POFX_DEVICE_FLAG_NO_D0 (0x01) | 请求不向适配器或单元的设备对象发送通电 IRP。 |
STOR_POFX_DEVICE_FLAG_NO_D3 (0x02) | 请求不将关机 IRP 发送到适配器或设备的设备对象。 |
STOR_POFX_DEVICE_FLAG_ENABLE_D3_COLD (0x04) | 使 Storport 能够设置适配器的 D3 冷状态(如果支持)。 此标志仅适用于适配器。 |
STOR_POFX_DEVICE_FLAG_NO_DUMP_ACTIVE (0x08) | 指示设备在空闲时是否可用于转储。 如果设备已进入空闲状态或在空闲状态时关闭电源,微型端口将无法使存储设备在转储模式下处于活动状态。 |
STOR_POFX_DEVICE_FLAG_IDLE_TIMEOUT (0x10) | 如果 STOR_POFX_DEVICE_V3 表示单位,则此标志指示应遵循 UnitMinIdleTimeoutInMS 字段。 如果 STOR_POFX_DEVICE_V3 表示适配器,则表示应遵循 AdapterIdleTimeoutInMS 字段。 |
STOR_POFX_DEVICE_FLAG_ADAPTIVE_D3_IDLE_TIMEOUT (0x20) | 指示 Storport 应动态调整 D3 空闲超时,以便设备在必要时可以主动进入 D3。 仅当使用 STOR_POFX_DEVICE_V3 时,这才有效。 |
STOR_POFX_DEVICE_FLAG_NO_UNIT_REGISTRATION (0x40) | 指定不应为此适配器公开的单元注册运行时电源管理。 这仅适用于表示适配器 的STOR_POFX_DEVICE 结构。 |
STOR_POFX_DEVICE_FLAG_PERF_STATE_PEP_OPTIONAL (0x80) | 指示微型端口不需要平台扩展插件的 P 状态支持, (PEP) 。 如果不确定,请设置此标志。 |
STOR_POFX_DEVICE_FLAG_NO_IDLE_DEBOUNCE (0x100) | 检查当设备处于较低功率状态时,微型端口的转储版本在设备上电的能力。 |
STOR_POFX_DEVICE_FLAG_DUMP_ALWAYS_POWER_ON (0x200) | 微型端口希望转储堆栈尝试打开设备电源。 |
STOR_POFX_DEVICE_FLAG_DISABLE_INTERRUPTS_ON_D3 (0x400) | 微型端口希望 Storport 在 Dx 转换上禁用/启用中断。 |
STOR_POFX_DEVICE_FLAG_ADAPTER_D3_WAKE (0x800) | 微型端口等位输入适配器 D3 唤醒支持。 |
STOR_POFX_DEVICE_FLAG_GET_PERF_STATE_FROM_PEP (0x1000) | 微型端口需要 PEP 中的 P 状态。 |
UnitMinIdleTimeoutInMS
单位的最小空闲时间(以毫秒为单位)。 仅当在 Flags 中设置STOR_POFX_DEVICE_FLAG_IDLE_TIMEOUT时,此值才有效。
AdapterIdleTimeoutInMS
适配器空闲超时值(以毫秒为单位)。 仅当在 Flags 中设置STOR_POFX_DEVICE_FLAG_IDLE_TIMEOUT时,此值才有效。
MinimumPowerCyclePeriodInMS
指示设备不应 (D0 -> D3 -> D0) 一次以上的给定周期(以毫秒为单位)。 仅当设置了STOR_POFX_DEVICE_FLAG_ADAPTIVE_D3_IDLE_TIMEOUT标志时,此成员才有效。
Components[ANYSIZE_ARRAY]
此成员是一个或多个 STOR_POFX_COMPONENT 元素数组中的第一个元素。 如果数组包含多个元素,则附加元素紧跟 STOR_POFX_DEVICE 结构。 数组包含设备中每个组件的一个元素。 目前,存储设备只有一个组件,因此不需要额外的组件结构。
注解
若要为 Storport PoFx 支持注册存储适配器,微型端口驱动程序在其 HwStorInitialize 例程中调用 StorPortEnablePassiveInitialization,并实现 HwStorPassiveInitializeRoutine。 微型端口在其 HwStorPassiveInitializeRoutine 中调用 StorPortInitializePoFxPower 来提供有关适配器组件的信息。
为了注册 Storport PoFx 支持的存储单元,微型端口驱动程序实现 HwStorUnitControl 回调例程并提供 ScsiUnitPoFxPowerInfo 单元控制代码的处理。 处理 ScsiUnitPoFxPowerInfo 控制代码时,如果启用了单元组件的空闲电源管理,微型端口将调用 StorPortInitializePoFxPower 。
由其 Components 数组索引标识的存储设备的 组件 。 存储设备只有一个组件,因此使用索引 0。 StorPortPoFxActivateComponent 和 StorPortPoFxIdleComponent 等例程使用组件的数组索引来标识组件。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 10 |
标头 | storport.h |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈