WinUSB 电源管理
WinUSB 使用 KMDF 状态机进行电源管理。 电源策略通过调用 WinUsb_SetPowerPolicy进行管理。
为了修改 WinUSB 的电源行为,可以在设备的 INF 中修改默认注册表设置。 这些值必须通过添加 HW 中的 值写入注册表中的设备特定位置。INF 的 AddReg 节。
可以在设备的 INF 中指定以下列表中的注册表值来修改电源行为。
系统唤醒
此功能由 SystemWakeEnabled DWORD 注册表设置控制。 此值指示是否应允许设备从低功率状态唤醒系统。
HKR,,SystemWakeEnabled,0x00010001,1
- 值为零或缺少此值表示不允许设备唤醒系统。
- 若要允许设备唤醒系统,请将 SystemWakeEnabled 设置为非零值。 “设备 属性” 页中的复选框会自动启用,以便用户可以替代设置。
注意
更改 SystemWakeEnabled 设置不会影响选择性挂起,此注册表值仅适用于系统挂起。
选择性暂停
选择性挂起可由任意一个系统或 WinUSB 设置禁用。 单个设置无法强制 WinUSB 启用选择性挂起。
WinUsb_SetPowerPolicy PolicyType 参数中指定的以下电源策略设置会影响选择性挂起的行为:
- AUTO_SUSPEND设置为零时,它不会将设备设置为选择性挂起模式。
- SUSPEND_DELAY设置设备空闲时间以及 WinUSB 请求设备进入选择性挂起之间的时间。
下表显示了注册表项如何影响选择性挂起功能。
注册表项 | 说明 |
---|---|
DeviceIdleEnabled | 这是一个 DWORD 值。 此注册表值指示设备是否能够在空闲时关闭(选择性挂起)。
HKR,,DeviceIdleEnabled,0x00010001,1 |
DeviceIdleIgnoreWakeEnable | 设置为非零值时,即使设备不支持 RemoteWake,也会暂停设备。 |
UserSetDeviceIdleEnabled | 此值是 DWORD 值。 此注册表值指示是否应在“设备 属性” 页中启用复选框,允许用户替代空闲默认值。 当用户SetDeviceIdleEnabled 设置为非零值时,将启用复选框,并且用户可以在空闲时禁用关闭设备电源。 值为零或缺少此值表示未启用该复选框。
如果未设置 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 终结点队列不受电源管理。 读取请求在提交设备时唤醒设备。 但是,当读取请求等待时,设备可能会处于空闲状态。