我遇到了 Windows 7 无法睡眠的问题。
PowerCfg -requests
说“旧版内核调用程序“驱动程序阻止睡眠模式。这没有什么帮助或信息。我如何获取有关该对象的更多详细信息?
编辑:
我找到
Powercfg -requestsoverride
是处理此类行为异常的驱动程序和软件的最佳方法。
选项-requestsoverride文档记录不全。MSDN 没有提到 NAME 区分大小写,并且要从覆盖列表中删除请求,您需要提供带有空白 REQUEST 参数的选项。
答案1
感谢所有的建议!
最后我通过反复试验、禁用设备并重新启动缩小了问题范围。这是因为电视卡驱动程序挂起了,尽管不再使用,但并未释放电源请求。
编辑:
不幸的是,电视卡的问题时不时地重复出现。谷歌搜索显示这也是很常见的。我发现禁止驱动程序发出电源请求
Powercfg -requestsoverride Driver "Legacy Kernel Caller" System
解决了它。
“Legacy Kernel Caller” 在不同的 Windows 语言版本上有翻译。在我的波兰系统上,它显示“Starszego typu obiekt wywołujący jądro”。
答案2
从开始菜单中,输入“性能信息和工具”。
单击“高级工具”,然后单击“生成系统健康报告”。它应该指出遗留驱动程序问题。
编辑:
也試一試powercfg -request
。
答案3
答案4
我遇到了这个问题,并且 Legacy Kernal Caller 不断间歇性地回来,即使它已被证实在要忽略的事物列表中。
如果有人仍然遇到这样的问题,这里有一个批处理文件的链接+如何设置任务的说明.....两者都是学习曲线,我永远不想重复!!
https://github.com/richdyer2000/Sleepy
该批处理文件主要执行睡眠管理:
主循环运行约 300 秒(标准循环有 300 次迭代,ping 命令的计数为 2,用于控制持续时间),每次读取“powercfg -requests”的输出。如果它在一行中发现除“DISPLAY:”、“SYSTEM:”、...“ACTIVE LOCK SCRREN:”、“None.”或“[DRIVER] Legacy Kernel Caller”之外的任何内容,则主循环将重新启动。
如果到达主循环的末尾,则执行命令“rundll32.exe powrprof.dll,SetSuspendState 0,1,0”。在 Windows 10 上,似乎需要运行“powercfg -hibernate off”才能获得适当的睡眠状态,因此我将其包含在睡眠命令之前的代码中以确保万无一失。