You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows服务/驱动能否在系统关机前接收通知消息?

Windows 10关机流程与安全断电通知实现方案

核心问题解答:Windows关机时会向服务/驱动发送消息吗?

会的,Windows在关机、重启或注销流程中,会按固定顺序向系统内的服务、驱动发送特定通知:

  • 服务层面:Windows会向已注册的服务发送SERVICE_CONTROL_SHUTDOWN控制码,服务可通过处理该控制码执行收尾操作。你可以编写自定义Windows服务,在收到该通知时向自研板的MCU发送断电指令。
  • 驱动层面:内核模式驱动会收到IRP_MJ_SHUTDOWN请求,驱动程序可在处理这个IRP时完成硬件相关收尾,包括向自研板发送信号。

实现安全断电通知的具体方案

方案1:自定义Windows服务实现

  1. 创建Windows服务,在ServiceMain函数中注册控制码处理回调HandlerEx。
  2. 在回调函数中捕获SERVICE_CONTROL_SHUTDOWN事件,此时执行向自研板MCU发送通知的逻辑(比如通过串口、GPIO或自定义通信协议)。
  3. 注意:服务处理关机通知的默认超时约20秒,若需更长时间,可调用SetServiceStatus延长,但不建议过度延长,避免阻塞系统关机流程。

方案2:内核驱动实现

如果自研板与SBC有直接硬件交互(如GPIO、PCIe设备),内核驱动方案可靠性更高:

  1. 编写内核驱动,注册IRP_MJ_SHUTDOWN的处理回调函数。
  2. 在回调中通过硬件接口向自研板发送安全断电信号。
  3. 系统会等待驱动完成IRP处理后再继续关机流程,该阶段的可靠性优于用户态服务,更适配嵌入式场景。

关键注意事项

  • 无论采用哪种方案,通知发送逻辑需简洁高效,避免阻塞关机流程。
  • 需测试极端场景:若系统意外崩溃,Windows可能无法发送正常关机通知,此时自研板MCU需具备独立看门狗或超时检测机制,确保异常情况下也能安全断电。

内容的提问来源于stack exchange,提问作者0___________

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 18:33:10