64bit ノートパソコン UL20FT を初めて購入したので、pcSleep を用いて
「目覚まし時計機能」の動作確認をしています。
しかし Windows7 64bit が原因なのか、自動復旧がうまくいかない。
SetWaitableTimer() 自体は成功しているのだが、目覚めない。
原因を調査中ですが、ET2002T( Windows7/32bit ) では問題なかったので、
もしかしたら 64bit 特有のバグかもしれない。
64bit 環境って、今までの資産がビミョーに使えなかったりでめんどいっす。
あとがき:
Windows7 の電源オプションの設定で無効にされていたのが原因でした。
「コントロールパネル」→「システムとセキュリティ」「電源オプション」→
「プラン設定の変更」→ 「詳細な電源設定の変更」→「スリープ」→
「スリープ解除タイマーの許可」
有効にすることにより解決。
なお pcSleep では Microsoft の仕様通り、絶対時間で wakeup するように
しており、またシグナルも一度のみ発生させており、スレッドも警告可視
状態なので、ハードウェアや OS で拒否設定をしない限りは全ての Windows で
正常に動作するハズです。
◆開発者向け情報
・ pDueTime のメンバ変数に 0; などを代入することは Microsoft が仕様を定めていないので、
それを設定(利用)しているツールは、予期せぬ不具合が起きる可能性があります。
( 復旧時間がおかしい、復旧しない、勝手に復旧してしまうなど )
Windows7 で "目覚まし時計機能が動作しない" という方は、電源設定をまず
見直してみると良いかも。デフォルトでは「スリープ解除タイマー機能」は
無効にされています。
「スリープ解除タイマー」の状態を取得できれば良いのだが、API は無さそう。
レジストリに設定されてるのかな。
0 コメント:
コメントを投稿