解决win11 关闭显示器之后断网冻结待机bug问题 Sleep相关

https://www.reddit.com/r/Dell/comments/h0r56s/getting_back_s3_sleep_and_disabling_modern/

原文

解决办法:

cmd管理员权限输入如下:

reg add HKLM\System\CurrentControlSet\Control\Power /v PlatformAoAcOverride /t REG_DWORD /d 0

原因:

1.win2004之后待机状态被重写 legacy standby改成了modern standby  s0-s3逻辑重写

2.重写之后睡眠状态应该是? 猜测:默认s0   

 sleep 状态自动转s0  病状为 假断网假死机    实际上是系统冻结 将所有收到的指令在唤醒后才进行同步/异步处理  比如使用向日葵链接的时候一直连不上         或者向日葵连接上后使用win32api的关闭显示器指令后 再在向日葵内进行操作向日葵内显示也是冻结状态 但是当唤醒的时候其中操作就再次按步骤执行   网络适配器也并非断开重连  而是(陷入休眠状态?)  所以没有勾选自动重连 网络也会自动连上

3.执行上面cmd之前输入 POWERCFG /a 指令只会

显示s0可用 网络连接    但是我这里的网络连接直接是不可用的 

而执行之后待机s3已经回来了 也就是关闭屏幕后 后台程序仍在运行而没有被挂起   

ps:1.百度上所有修改休眠睡眠指令我都试过完全无效

2.关闭显示器的指令在win32api我目前只找到一个  我翻遍github也是同一个

无非是:

private void button1_Click(object sender, EventArgs e)
        {

            //关闭显示器
            SendMessage(this.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
            SendMessage(this.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 1);

        }

        [DllImport("user32.dll")]
        public static extern IntPtr SendMessage(IntPtr hWnd, uint msg, uint wParam, int lParam);

        private const uint WM_SYSCOMMAND = 0x0112;

        private const uint SC_MONITORPOWER = 0xF170;

我也想过  gpio获取显示屏的底层进行关闭而不触发win32api调用关闭显示器时候触发的sleep 睡眠任务

3.有个改CsEnabled注册表的 已经失效 谷歌上看到一个微软工程师说自从21h1之后 微软已经block 封禁了这种做法 所以改Csenabled是没用的 有些版本甚至已经删除了这个项

4.为什么我知道是sleep睡眠引起的问题:

微软论坛上看到有条指令:   powercfg.exe /SleepStudy

这条指令是win2004重写再补全的 用于解决部分机器睡眠待机冲突的系统功耗日志

打开后是这样的:

 昨天的记录 正是我昨天一直调试win11的日志

显示着每次一使用上面c#的关闭屏幕函数之后自动执行sleep的操作  然后自动网络适配器开始冻结无法联网 

但是!!

当我把电池选项那边设成1分钟自动关闭屏幕之后   这种方法可以关闭屏幕 并且没有再次进入sleep状态 我也试过向日葵可以在关闭屏幕期间连接上去    可以确定是sleep其中出了问题 

然后偶然看见了微软论坛上某位xps用户提问  工程师也是提到了2004中改写了sleep   其中s0-s3在某些机器会冲突 完全确定是sleep导致了这个问题

5.这玩意挺难搞 一气之下刚才直接打开全部搜索结果慢慢看

资料:1.Windows 10:对戴尔个人计算机上的睡眠和休眠问题进行故障排除 | Dell 中国​​​​​​ 

有时候指望百度那些复制几十次的回答 真是不可能解决这个问题

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值