- お知らせ -
  • 当wikiのプログラムコードの表示を直してみました(ついでに長い行があると全体が下にぶっ飛ぶのも修正)。不具合があればBBSまでご連絡下さい。

Windows/Vista

はじめに Edit

タスクスケジューラにてバックアップをしているのですが、
スリープから復帰してバックアップをさせようとすると、
何故かスリープ復帰から2分後に、再度スリープしてしまう現象が起きている。

これは例えば、録画ソフトで録画タイマーをセットして、スリープさせておく→スリープ復帰で録画しようとする→何故か再度スリープorz という罠もあるらしい。

これをなんとか修正したい。

Microsoftでも確認している現象のようです。

現時点で仕様につき、いまのところ解決する方法はないみたいです
解決策が見えてきました!

原因&解決策 Edit

解決策がようやく見えてきました。
これでスリープがやっと使える?

解決策その1 通常120秒で再スリープする時間を長くする (現在確認中) Edit

海外サイトで見つかったこの方法です。
Sleep Return Timeout for Unattended Wake Up - Vista Forums

通常、スリープから復帰後に、120秒程度で再スリープするんですが、
その時間を問題ないくらい長くしてしまえばよい、という方法です。
レジストリを弄ります。

以下、まとめ

  1. レジストリエディタを管理者権限で開きます。
  2. 以下のキーに移動
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\238C9FA8-0AAD-41ED-83F4-97BE242C8F20\7bc4a2f9-d8fc-4469-b07b-33eb785aaca0\DefaultPowerSchemeValues
  3. 選んでいる電源オプションの「お気に入りのプラン」に合わせて以下のサブキーに移動する
    • 381b4222-f694-41f0-9685-ff5bb260df2e バランス
    • 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c 高パフォーマンス
    • a1841308-3541-4fab-bc81-f71556f20b4a 省電力
    • その他のキー 作成したプラン
  4. ACSettingIndex(AC電源) か DCSettingIndex(バッテリ時) の値をいじる
    デフォルトは 120 (秒)になっているので、
    例えば、24時間くらいにしておけばよさそう?
    24 * 60 * 60 = 86400 でよいのかな?

この解決策は現在確認中です。

解決策その2 メディア共有マシンにする(現在確認中) Edit

2chで見つかった解決策。

  1. コントロールパネル→ネットワークと共有センター→メディア共有、を「メディアを共有する」にチェックを入れる。
  2. コントロールパネル→電源オプション→プラン設定の変更→詳細な電源設定の変更→マルティメディアの設定→メディアを共有するタイミング→設定
    で、「アイドリングがスリープ状態になるのを回避します」をチェックしておく。(デフォルトだとONだと思うけど)

これで回避できるらしいですよ?

メディア共有マシンは強制的にスリープしないようにできる仕様を利用したもの。

これで回避できるみたいなら、他に解決策ありそうなもんだけども。
後でMicrosoftのサポートに問い合わせしてみたいところだ。

関連リンク Edit

Windows Vista ベースのコンピュータを休止状態から再開した後、非アクティブな状態が 2 分間続くと、コンピュータは再度休止状態になることがあります。) をクリックしてください。
via: Windows XP ベースのコンピュータで休止状態から再開した後、無通信タイマが 5 分に設定される

XPでもある問題の模様。Vistaだと2分で再度スリープになる。仕様なのか

本現象は、ほとんどの ACPI 対応の PC における制限事項となります。
休止状態 (ハイバネーション) から復帰 (レジューム) 後、何らかのキーを押すかマウスをクリックしてください。
via: [Windows XP] 休止状態から復帰後、勝手に休止状態に移行してしまう

orz

以下、技術的な話 Edit

  • 無題 標準ページ
    指定プログラム起動時にスリープを抑止するソフトSuspend Administrator発見!!このソフトの実装がどうなっているかが気になる。

Suspend AdministratorがVistaでちゃんと動けば解決するような気がする!
Suspend Administratorに休止状態を無効化するプログラムを登録してみましたが、Vistaではダメでした orz

[Win32] スレッド状態をシステムを常に『忙しく (Busy に) 』しておきたい (サスペンド対策)
スレッドが処理中であることをシステムに登録しておくことで、電源管理 (サスペンドやハイバーネート) の発動を抑制できる。 SetThreadExecutionState() を使って調整すれば OK 。

SetThreadExecutionState?(ES_SYSTEM_REQUIRED) を定期的に発行しておくとその間隔で内部状態が『忙しく』になる。

SetThreadExecutionState?(ES_CONTINUOUS|ES_SYSTEM_REQUIRED) を発行しておくと、 SetThreadExecutionState?(ES_CONTINUOUS) で解除されるまで状態維持。
via: 技術メモ - 注意点、備忘録、そんなの
PC がアイドル状態でも引き続き実行されなければならないアプリケーションの場合は、SetThreadExecutionState() API を ES_SYSTEM_REQUIRED フラグ付きで呼び出す必要があります。詳細については Microsoft プラットフォーム SDK を参照してください。

システムは、実行中のアプリケーションに対して、WM_POWERBROADCASTメッセージに wParam値 PBT_APMQUERYSUSPEND を付けて送信することで、電源を停止しようとしていることを通知します。
via: 一般的なアプリケーション互換性について

Vistaでは、PBT_APMQUERYSUSPENDは使えないらしい。

システムの中断を拒否するには、フォームの WndProc メソッドをオーバーライドして、WM_POWERBROADCAST メッセージ時に休止状態を拒否する値 (BROADCAST_QUERY_DENY) を設定します。まず、スタンバイや休止状態を通知するメッセージと、スタンバイや休止状態を拒否することを示す定数の宣言を行います。
via: スタンバイや休止状態を阻止する方法

指定ソフトのWndProcをサブクラス化して WM_POWERBROADCAST を処理するとOKか? Vistaだとダメポ

961 名前:955[sage] 投稿日:2008/07/04(金) 12:55:27 ID:fPnAKN7Q
その後いろいろ調べてみたところ、根本的な解決法では無いかもしれませんが、
海外のサイトに以下の対処法がありました。

1.ネットワークと共有センターでメディア共有を有効にする。
 (※有効にするにはプライベートネットワークにする必要有り)
2.電源オプション→マルチメディアの設定→メディアを共有するタイミングで
「アイドリングがスリープ状態になるのを回避します。」に設定

上記のように設定するとタスクスケジューラでスリープ復帰後、何もしないと2分後に再スリープしてしまう
ことはなくなりました。

ちなみにこの設定だと省電力の為の自動スリープも無視されますが、
手動やアプリケーションからのスリープは有効ですので
TV録画ソフト等の予約録画等は問題無く動きました。
(自分の使ってるソフトで指定時間にスリープ復帰→録音→録音終了→再スリープ
→再度指定時間にスリープ復帰→録音→シャットダウンとやってみましたが問題有りませんでした。)
via: WindowsVista質問スレッド 35枚目

解決策っぽい。

989 名前:名無し~3.EXE[sage] 投稿日:2008/09/04(木) 07:13:33 ID:90rdxHTc
タスクスケジューラを利用するためにはスリープ機能はあきらめてサーバのごとく電源入れっぱなしにしないといけないんでしょうか?
タスク実行のためスリープから自動復帰後、タスク実行中(処理はbatにまとめてあって40分くらいかかります。)
にもかかわらず2分くらいするとスリープに入ってしまいます。
電源オプションではハイブリッドスリープは無効、休止もGUIに出てこないように設定して、
スリープに入るまでの時間は120分に設定しています。

990 名無し~3.EXE [sage] 2008/09/04(木) 07:27:09 ID:90rdxHTc
あ、ついかで、電源ボタンを手動で押してスリープ解除するとタスクの続きを実行し始めます。深夜のうち終わらせておいてほしいからタスクに登録したのに・・
タスクによるシステムのスリープ状態からの再開原因は[RTC]になっています。タスク実行中に勝手にスリープに入るシステムイベントはイベント42,Kernel-Powerです。

994 名無し~3.EXE [sage] 2008/09/04(木) 13:29:38 ID:N502JFpZ
>>990
仕様
標準状態ではアプリケーションやサービスによるスリープや休止への移行抑止を
許可されていない
グループポリシーの使えるBusiness以上のエディションならこの設定を無効に出来

※スリープ関係の設定部分に存在する、レジストリで出来るのか分からない

デフォルトでは120秒で自動的にタイムアウトしてスリープか休止に移行する
(こちらはレジストリでも変更できるようで公開しているWEBがある)
なおレジストリ編集は教えたりしないのですまん

処理する側(アプリケーションなど)で抑止処理を特別にもっているもなら可能かもね
via: WindowsVista質問スレッド 37枚目

Show recent 10 comments. Go to the comment page.

  • windows10の地デジチューナー(magicTV)の復帰が完全に行われなくて困っていたところ解決策1で正常復帰できました。ありがとうございました。 -- 2018-01-05 (Fri) 20:47:06
Name:

Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2008-09-24 Wed 02:23:09 JST (4272d)