WinUSB 电源管理
WinUSB 使用 KMDF 状态机进行电源管理。 电源策略通过调用 WinUsb_SetPowerPolicy进行管理。
若要修改 WinUSB 的电源行为,可以在设备的 INF 中修改默认注册表设置。 必须通过在 HW 中添加值,将这些值写入注册表中的设备特定位置 。 INF 的 AddReg 部分。
可以在设备的 INF 中指定以下列表中所述的注册表值,以修改电源行为。
系统唤醒
此功能由 SystemWakeEnabled DWORD 注册表设置控制。 此值指示是否应允许设备将系统从低功耗状态唤醒。
HKR,,SystemWakeEnabled,0x00010001,1
- 如果值为零,或者没有此值,则表示不允许设备唤醒系统。
- 若要允许设备唤醒系统,请将 SystemWakeEnabled 设置为非零值。 设备“属性”页中的检查框会自动启用,以便用户可以替代设置。
注意
更改 SystemWakeEnabled 设置对选择性挂起没有影响,此注册表值仅适用于系统挂起。
选择性挂起
选择性挂起可由多个系统或 WinUSB 设置中的任何一个禁用。 单个设置无法强制 WinUSB 启用选择性挂起。
WinUsb_SetPowerPolicyPolicyType 参数中指定的以下电源策略设置会影响选择性挂起的行为:
- AUTO_SUSPEND 设置为零时,它不会将设备设置为选择性挂起模式。
- SUSPEND_DELAY 设置设备变为空闲到 WinUSB 请求设备进入选择性挂起之间的时间。
下表显示了注册表项如何影响选择性挂起功能。
注册表项 | 说明 |
---|---|
DeviceIdleEnabled | 这是一个 DWORD 值。 此注册表值指示设备是否能够在空闲 (选择性挂起) 关闭。
HKR,,DeviceIdleEnabled,0x00010001,1 |
DeviceIdleIgnoreWakeEnable | 设置为非零值时,即使设备不支持 RemoteWake,也会暂停设备。 |
UserSetDeviceIdleEnabled | 此值是 DWORD 值。 此注册表值指示是否应在设备“属性”页中启用检查框,以允许用户替代空闲默认值。 将 UserSetDeviceIdleEnabled 设置为非零值时,检查框处于启用状态,用户可以在空闲时禁用设备电源。 值为零或缺少此值表示未启用检查框。
如果未设置 DeviceIdleEnabled,则忽略 UserSetDeviceIdleEnabled。 HKR,,UserSetDeviceIdleEnabled,0x00010001,1 |
DefaultIdleState | 这是一个 DWORD 值。 此注册表值设置AUTO_SUSPEND电源策略设置的默认值。 此注册表项用于在句柄未向设备打开时启用或禁用选择性挂起。
如果未设置 DeviceIdleEnabled ,则忽略此值。 HKR,,DefaultIdleState,0x00010001,1 |
DefaultIdleTimeout | 这是一个 DWORD 值。 此注册表值设置SUSPEND_DELAY电源策略设置的默认状态。 该值指示在确定设备处于空闲状态之前等待的时间(以毫秒为单位)。 HKR,,DefaultIdleTimeout,0x00010001,100 |
检测空闲
所有写入和控制传输都会强制设备进入 D0 电源状态并重置空闲计时器。 IN 终结点队列不受电源管理。 读取请求在提交后唤醒设备。 但是,当读取请求等待时,设备可能会变为空闲状态。
相关主题
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈