自動でスリープモードにならない

Windows7で一定時間操作が無いとスリープモードに入る,はずがいつの間にかディスプレイが暗くなるだけでスリープしない状態に.

色々調べると,結果としては特定のデバイスがスリープへの移行を阻害しているとのことでした.

スリープを阻害しているデバイスを調べるためには?

下記コマンドを入力することで,スリープへ移行する際に阻害する原因の一覧を,ファイルに出力します.

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

powercfgwindowsの電源管理用コマンドです.
で,上記のコマンドを実行すると1分後ぐらいにenergy.htmlに電源管理時のエラーが出力されます.
すると以下のようなエラーが表示されます(一部)

Analysis Results
Errors
System Availability Requests:System Required Request
The device or driver has made a request to prevent the system from automatically entering sleep.
Driver Name	\FileSystem\srvnet

USB Suspend:USB Device not Entering Suspend
The USB device did not enter the Suspend state. Processor power management may be prevented 
if a USB device does not enter the Suspend state when not in use.
Device Name	USB Root Hub
Host Controller ID	PCI\VEN_8086&DEV_2939
Host Controller Location	PCI bus 0, device 26, function 2
Device ID	USB\VID_8086&PID_2939
Port Path

一つ目のエラーを見ると分かるように,srvnetなるドライバが,スリープの中止を要求している(# ゚Д゚)

電源要求の設定を優先にするには

てことで,このドライバに対して電源要求の設定を優先するように設定する.
まずはコマンド上で再度スリープを阻害するプロセスやドライバを確認(管理者で実行すること)

powercfg -requests
DISPLAY:
None.

SYSTEM:
[DRIVER] \FileSystem\srvnet
An active remote client has recently sent requests to this machine.

AWAYMODE:
None.

powercfg -requestsでディスプレイのターンオフ(DISPLAY),スリープへの移行(SYSTEM),AWAYモードへの移行(ARAYMODE)を阻害しているプロセスやデバイスが表示されます(ここでは,「SYSTEM」に先程の「srvnet」の名前が表示される.)

で,目標の「srvnet」に対して電源要求を優先するには下記のコマンドを実行する.

powercfg -requestsoverride DRIVER srvnet SYSTEM

-requestorverrideで,電源要求の優先を設定するオプションを指定.
DRIVER srvnetには,対象がプロセスであればPROCESS,ドライバであればDRIVERといった具合に指定して,その後には対象のドライバ名等を指定.
最後にオーバーライドするモードとしてSYSTEMを指定.

これで,自動でスリープするようになりました.(*^_^*)


参考は以下のサイトから(いつものように丸写しだけどな!!)
http://journal.mycom.co.jp/articles/2010/07/20/w7/index.html


Windows コマンドプロンプト ポケットリファレンス

Windows コマンドプロンプト ポケットリファレンス

Windows DOS/コマンドプロンプト辞典

Windows DOS/コマンドプロンプト辞典