Windowsが自動でスリープ移行できない時に原因を特定する方法


ある日「指定時間が経過してもWindowsがスリープしない」という不具合に気付いてしまったあなた。そして俺。
スリープしない理由は、何が原因でいつからできないのかという特定に苦労している事と思います。
そしてWindowsのOSの概念上、これからもそういう事態はいつ起きてもおかしくないのが現状です。
パソコンの設定画面を見るだけで目眩がするそこのお嬢さんでも、一発でスリープを阻止している原因の特定方法と対処方法です。
今回紹介する方法はWindows10です。

SPONSORED LINK

Windowsの標準的な動作

まずはWindowsの標準的な動作を知る必要があります。
Windowsは「SetThreadExecutionState」というAPIが存在しますので、動画の再生やメディア操作などの特定の作業が実行されている時は、スリープへの移行を阻止します。

つまり、ある特定のソフトを使っている時にスリープに移行しないのは当たり前の結果ということですね。
そういったケースではWindowsの不具合でスリープしないというわけではないと覚えておきましょう。
もちろんその設定すらも無視してスリープさせる事は可能ですが、それはまた話が変わります。

powercfgでスリープできない原因を確認

まずは、いつも使っているソフトなどを普通に開いて、いつもの環境状態にします。
Windowsボタンを右クリックして、管理者権限でコマンドプロンプトを開きます。

powercfg /requestsでスリープ阻止を表示させる

powercfg /requests

と入力して実行します。

私の環境で返ってきた結果です。

C:\WINDOWS\system32>powercfg /requests
DISPLAY:
なし。
SYSTEM:
[DRIVER] Realtek High Definition Audio (HDAUDIO\FUNC_01&VEN_10EC&DEV_0889&SUBSYS_104383C0&REV_1000\4&24eaae2f&0&0001)
現在 1 つのオーディオ ストリームが使用中です。
AWAYMODE:
なし。
実行:
なし。
PERFBOOST:
なし。

powercfgは電源管理のコマンドなのですが、「requests」というオプションを利用することで、スリープ移行を阻止しているシステムやドライバ、プロセスが一覧で表示できます。

つまり、正しくスリープに移行させるにはこのコマンドを実行した時に、全ての項目で「なし」にならなければいけないわけです。

powercfg /requestsの各項目について

DISPLAY 「ディスプレイの電源を切る」を阻止するプロセスの一覧
SYSTEM 「コンピューターをスリープ状態にする」を阻止するプロセスの一覧
AWAYMODE 「退席中モード」の実行を阻止するプロセスの一覧

今回はスリープ移行の原因を探しているので、SYSTEMの項目にあるプロセスが犯人という事になります。

ちなみに今回の調査でわかった犯人は…

[DRIVER] Realtek High Definition Audio (HDAUDIO\FUNC_01&VEN_10EC&DEV_0889&SUBSYS_104383C0&REV_1000\4&24eaae2f&0&0001)
現在 1 つのオーディオ ストリームが使用中です。

こいつです。

ちなみに音楽プレイヤーは開いていない。正確には一度開いて閉じたにも関わらず、使用中のまま残ってしまっているようでした。

powercfg /requestsがあった時の対処方法

まずは、そのドライバの設定を見直したり、最新のドライバがないか確認したり、ドライバの再インストールという正攻法を試しましょう。

それでもダメだった時には、電源設定を優先させるコマンドを使って、スリープを阻止するのをヤメてほしい私の気持ちを最大限に投げかけます

powercfg -requestsoverride DRIVER "Realtek High Definition Audio" SYSTEM

記述方法は「powercfg -requestsoverride【[]で囲まれた種類名】【プロセス名】【DISPLAYなどの項目名】」となっています。
実行しても何の応答もないのがデフォルト動作なのでご心配なく。

ちなみに解除したい時は【項目】を消して実行するだけです。

上記のコマンドが正しく設定されているか確認をしておきましょう。

powercfg -requestsoverride

これで実行すると「requestsoverride」オプションで設定されたプロセスなどが一覧で表示されますよ。

念のため再起動でもして、スリープ確認をすればきっと幸せになれます!
そして、これでもダメならもうお手上げスリープさんです。
略して「オテスピ」ですね。
最近になって若い人も使うようになった言葉ですが、Windows11が発売する頃には流行語大賞を取っているかもしれませんね。

まてよ。

まだ使えるコマンドがあった!

powercfg /energyで電源関連の全てを知る

電源関連の診断レポートを吐き出してくれるpowercfgのオプション「energy」がありました。
これを使えば、HTML形式で様々なパソコンの状態をレポートしてくれます。
もちろんスリープ移行時に問題となる部分も洗い出してくれます。

早速コマンドです。

powercfg /energy -output %USERPROFILE%\Desktop\energy.html

待つこと60秒であなたのデスクトップに「energy.html」というファイルが作成されているはずです。

それをブラウザで開いてみましょう。
windows-auto-sleep
この項目があったらアウトです。

他にもUSB関連のエラーは特に多いと思いますが、

このデバイスはセレクティブ サスペンド状態になりませんでした。この USB デバイスがセレクティブ サスペンド状態でないときには、プロセッサの電源管理が行われないことがあります。このことによって、システムのスリープが妨げられることはありません。

という部分は無視しても構いません。

まとめ

今まで何台ものWindows端末を使ってきましたが、スリープが思ったように動かない経験はほとんどの端末で経験しました。
騙し騙し使ってはいましたが、やっぱり根本的な解決方法を知る手段を覚えておきたいと思いました。
もしかしたらスリープの問題点を解決すれば、日々の電気代がガクっと下がるかもしれませんよ!

今日も知識欲は止まらない。

SPONSORED LINK
トップへ戻る