在驱动程序中支持 D3cold
从 Windows 8 开始,D3 (关闭) 设备电源状态分为两个不同的子状态:D3hot 和 D3cold。 D3 是最低功率的设备电源状态,D3cold 是 D3 的最低功率子状态。 将空闲设备移动到 D3cold 子状态可以减少功耗,并延长移动硬件平台在电池充电时可以运行的时间。
在 D3hot 中,设备大部分已关闭。 但是,设备不会与其main电源断开连接,父总线控制器可以检测总线上是否存在设备。 在 D3cold 中,main电源已从设备中删除,并且总线控制器无法检测到设备是否存在。 有关详细信息,请参阅 设备Low-Power状态中 D3hot 和 D3cold 的说明。
在早期版本的 Windows 中,D3 设备电源状态隐式分为 D3hot 和 D3cold 子状态,但设备无法进入 D3cold,除非计算机准备退出 S0 系统电源状态并进入睡眠状态之一 S1 到 S4。 低功率 Dx 表示当计算机保留在 S0 中时,设备可以进入,限制为 D1 到 D3hot。
Windows 8是支持在计算机处于 S0 且未准备进入睡眠状态时设备电源状态转换为 D3cold 子状态的第一个 Windows 版本。 以这种方式支持 D3cold 的设备有助于通过以下方式节省电量:
- 设备在 D3cold 中消耗的功率比其他任何低功率 Dx 状态都少。
- 如果此设备与其他设备共享总线,并且所有这些设备都支持 D3cold,则在总线上的所有设备进入 D3cold 后,总线控制器可以进入低功率 Dx 状态。
- 如果此设备与其他设备共享电源,并且所有这些设备都支持 D3cold,则当其中最后一个设备进入 D3hot 时,可以删除电源,此时这些设备全部一致进入 D3cold。
相反,在 D3cold 中无法空闲的设备可能会阻止其他设备进入 D3cold 或其他低功率 Dx 状态。
以下主题包含有关在设备驱动程序中支持 D3cold 的详细信息。
在本节中
主题 | 说明 |
---|---|
启用到 D3cold 的转换 | 所有版本的 Windows 都允许设备处于 D3cold 状态,而计算机处于睡眠状态 (处于系统低功率状态之一,即 S1 到 S4) 。 在计算机退出 S0 之前,函数驱动程序、总线驱动程序和筛选器驱动程序协同工作,将设备移动到 D3hot。 当计算机进入低功耗 Sx 状态时,此转换具有将设备从 D3hot 移动到 D3cold 的副作用。 |
设备的 D3cold 功能 | 在作为电源策略所有者 (设备的 PPO) 的驱动程序允许设备在计算机保持 S0) 时进入 D3cold (之前,驱动程序必须验证设备在设备进入 D3cold 后是否能够响应并继续正常运行。 |
使用 GUID_D3COLD_SUPPORT_INTERFACE 驱动程序接口 | 从 Windows 8 开始,驱动程序可以调用 D3COLD_SUPPORT_INTERFACE 接口中的例程,以确定设备的 D3cold 功能并使这些设备能够使用 D3cold。 此接口中的两个主要例程是 SetD3ColdSupport 和 GetIdleWakeInfo。 |
意外唤醒 | 意外唤醒是意外地过渡到 D0。 设备进入 D3cold 后,当同一电源轨上的另一台设备的驱动程序请求从 D3cold 转换为 D0 时,它可能会遇到意外唤醒作为副作用。 第一个设备的驱动程序必须接收意外唤醒通知,以防止设备保持未初始化的 D0 状态。 |