PortCls 系统驱动程序利用系统的电源空闲检测功能为其音频客户端实现非活动计时器。 PortCls 在初始化计时器时将两个超时值和一个所需的空闲电源状态配置到计时器中。 PortCls 监视设备的任何访问(例如 I/O 和属性访问),并有效地重置每个访问的计时器计数。 如果计时器超时,系统将请求电源 IRP 将设备置于所需的空闲状态。 将设备置于空闲状态后,如果有新的访问请求,PortCls 将会重新为设备供电。
PortCls 包含空闲超时和空闲电源状态的硬编码默认值。 硬件供应商可以选择通过将自己的值写入系统注册表中的特定于驱动程序的密钥来替代默认值。 通过这种方式,供应商可以选择最适合其设备的电源空闲参数值。
供应商可以替代以下电源空闲参数的默认值:
ConservationIdleTime
此参数指定系统在节能模式下运行时的空闲超时间隔。 这是系统在电池供电时通常使用的模式。 此参数的默认值为 0,这会在保护模式下禁用电源空闲计时器。 硬件供应商可以使用如下所示的 inf 文件设置值。
[MyAudioDevice.AddReg] HKR,PowerSettings,ConservationIdleTime,%REG_BINARY%,1e,00,00,00
前面的 INF 文件片段显示 ConservationIdleTime 的十六进制(十六进制)值“1e”,这相当于 30 秒的空闲超时。
FLG_ADDREG_BINVALUETYPE
其他参数用于控制注册表项的添加方式。 例如,%REG_BINARY% 指示数据存储为“原始”数据。 有关详细信息,请参阅 INF AddReg 指令。
PerformanceIdleTime
此参数指定系统在性能模式下运行时的空闲超时间隔。 这是系统在 AC 电源上运行时通常使用的模式。 此参数的默认值为 0,这会在性能模式下禁用电源空闲计时器。
硬件供应商可以使用如下所示的 inf 文件设置值。
[MyAudioDevice.AddReg] HKR,PowerSettings,PerformanceIdleTime,%REG_BINARY%,2c,01,00,00键的值指定超时间隔(以秒为单位)。 在此示例中,2c,01 的值将为 300 秒或 5 分钟。
IdlePowerState
此参数指定在空闲超时期限到期后,设备将置于的电源模式。 此参数的默认值为 3,对应于设备电源状态 D3,这是最低功率设备低功率状态。 硬件供应商可以使用如下所示的 inf 文件设置值。
[MyAudioDevice.AddReg] HKR,PowerSettings,IdlePowerState,%REG_BINARY%,03,00,00,00键中放置的值应分别为 0、1、2 或 3,分别对应于设备电源状态 D0、D1、D2 或 D3。
只有当设备安装 INF 文件创建了电源空闲的三个注册表项时,这些项才会存在。 在配置电源空闲计时器之前,PortCls 会尝试从注册表中检索驱动程序特定的电源空闲参数。 PortCls 使用默认值代替它在注册表中找不到的任何电源空闲参数。 如前所述,默认电源空闲参数值禁用空闲计时器。
有关指定 ConservationIdleTime、PerformanceIdleTime 和 IdlePowerState 参数的详细信息,请参阅 PoRegisterDeviceForIdleDetection 中最后三个调用参数的定义。
例
例如,硬件供应商可能想要为音频设备指定以下电源空闲参数: ConservationIdleTime = 0x0000001e (30 秒), PerformanceIdleTime = 0x0000012c (300 秒), IdlePowerState = 0x00000003 (设备电源状态 D3)。 若要启用这些设置,设备安装文件可以包含包含以下指令的 INF AddReg 部分 :
[MyAudioDevice.AddReg]
HKR,PowerSettings,ConservationIdleTime,%REG_BINARY%,1e,00,00,00
HKR,PowerSettings,PerformanceIdleTime,%REG_BINARY%,2c,01,00,00
HKR,PowerSettings,IdlePowerState,%REG_BINARY%,03,00,00,00