windows pnp/power status Manager(设备 电源状态介绍)

一、先记住两套状态机

Windows有两套电源状态:

系统状态(System Power State)

整个电脑的状态:

复制代码
复制代码
S0
S1
S2
S3
S4
S5

设备状态(Device Power State)

某个设备的状态:

复制代码
复制代码
D0
D1
D2
D3

例如:

  • 网卡
  • USB
  • SSD
  • 摄像头

每个设备都有自己的 D 状态。


二、系统状态 S-State


S0

正常工作

复制代码
复制代码
CPU运行
内存供电
设备供电

就是:

复制代码
复制代码
正在使用电脑

S1

轻度睡眠

CPU停止执行:

复制代码
复制代码
CPU Clock停止

但:

复制代码
复制代码
CPU供电
RAM供电

还在。


唤醒非常快。


现在基本很少见。


S2

比S1更深。

CPU断电:

复制代码
复制代码
CPU Power Off

但:

复制代码
复制代码
RAM仍供电

现代PC也很少使用。


S3(最重要)

传统意义:

Sleep(睡眠)


状态:

复制代码
复制代码
CPU断电
设备断电

但:

复制代码
复制代码
RAM保持供电

因此:

内存内容还在。


恢复时:

复制代码
复制代码
不用重新启动

直接恢复现场。


例如:

笔记本:

复制代码
复制代码
合盖

很多就是:

S3

(现代机器越来越多改成 Modern Standby)


S4(重点)

Hibernate(休眠)


状态:

复制代码
复制代码
RAM内容
写入硬盘

Windows生成:

复制代码
复制代码
hiberfil.sys

然后:

复制代码
复制代码
CPU断电
RAM断电
设备断电

整个机器:

几乎不耗电。


恢复时:

复制代码
复制代码
读取hiberfil.sys
恢复内存

S3 和 S4区别(面试高频)

项目 S3 S4
RAM供电
功耗 极低
恢复速度
数据保存位置 RAM 硬盘

S5

Soft Off


也就是:

复制代码
复制代码
正常关机

特点:

复制代码
复制代码
所有程序退出

内存内容丢失:

复制代码
复制代码
RAM清空

再次开机:

复制代码
复制代码
重新启动系统

三、设备状态 D-State

这是驱动面试更爱问的。


D0

正常工作

复制代码
复制代码
设备完全供电

例如:

复制代码
复制代码
网卡工作
SSD工作
USB工作

D1

浅睡眠

部分电路关闭。


恢复很快。


很多设备根本不支持。


D2

深睡眠

关闭更多硬件模块。


恢复比D1慢。


也不常见。


D3

设备关闭

最常见。


又分:

D3 Hot

设备有电:

复制代码
复制代码
还能响应唤醒

例如:

复制代码
复制代码
USB键盘唤醒电脑

D3 Cold

完全断电:

复制代码
复制代码
一点电都没有

四、系统状态和设备状态关系

很多人误解。


不是:

复制代码
复制代码
S3
=
D3

实际上:

系统状态变化时:

Power Manager会协调各设备进入对应状态。

例如:


电脑进入:

复制代码
复制代码
S3

那么:

网卡:

复制代码
复制代码
D3

USB:

复制代码
复制代码
D3

SSD:

复制代码
复制代码
D3

CPU:

停止运行。


五、真实例子

你合上笔记本盖子:

复制代码
复制代码
S3

Power Manager:

发送:

复制代码
复制代码
IRP_MJ_POWER

设备收到:

复制代码
复制代码
IRP_MN_SET_POWER

通知:

复制代码
复制代码
进入D3

网卡:

进入D3


USB:

进入D3


SSD:

进入D3


系统:

进入S3。


六、驱动中的体现

以前 WDM:

会处理:

复制代码
复制代码
IRP_MJ_POWER

例如:

复制代码
复制代码
IRP_MN_SET_POWER

复制代码
复制代码
IRP_MN_QUERY_POWER

KMDF:

一般:

复制代码
复制代码
EvtDeviceD0Entry

进入工作状态。


复制代码
复制代码
EvtDeviceD0Exit

离开工作状态。


七、面试标准回答

如果面试官问:

D0、D3是什么?

你可以回答:

D-State 是设备电源状态。D0 表示设备完全工作;D1、D2 是不同级别的低功耗状态;D3 表示设备关闭状态,其中 D3 Hot 仍保持部分供电支持唤醒,D3 Cold 则完全断电。


如果问:

S3 和 S4区别?

回答:

S3 是睡眠状态,RAM保持供电,系统上下文保存在内存中,恢复速度快;S4 是休眠状态,内存内容写入磁盘 hiberfil.sys,RAM断电,恢复速度较慢但几乎不耗电。


对于 Windows 驱动开发来说,真正需要掌握的是:

复制代码
复制代码
PnP状态机
Power状态机
IRP_MJ_PNP
IRP_MJ_POWER
D0Entry
D0Exit

这几个是面试和实际驱动开发中最常见的电源管理知识点。

相关推荐
元Y亨H1 小时前
Windows蓝屏错误0x00000124 (硬件错误) 完整排查笔记
windows
曲幽2 小时前
你的FastAPI又在服务器上“跑不起来”了?来,今天咱把打包这件事彻底聊透
linux·windows·python·docker·fastapi·web·pyinstaller·nssm·services
_可乐无糖2 小时前
踩完坑之后的总结:Windows安装docker
运维·windows·docker·容器
玖釉-2 小时前
Vulkan 示例解析:pipelines.cpp 如何在一个 Render Pass 中切换多条 Graphics Pipeline
c++·windows·算法·图形渲染
chushiyunen3 小时前
localwp+wordpress个人建站
windows
competes4 小时前
数据查询方式最左匹配原则
java·大数据·前端·人工智能·windows
IDIOT___IDIOT5 小时前
Windows 安装 Docker Desktop
windows·docker·容器
jingshaoqi_ccc14 小时前
windows 10系统下QT的安装及在Visual studio中的扩展安装
windows·qt·visual studio
東雪木19 小时前
泛型、反射、注解(Spring 框架核心底层)专属复习笔记
java·windows·笔记·学习·spring