rundll32.exe を解析をした結果、rundll32 PowrProf.dll,SetSuspendState の説明が間違ってるサイトが多数あるのが判明(笑)

rundll32.exe を解析してみた

シャットダウンや再起動のショートカットを作成する | とあるオタクの徒然日記

スリープのコマンド実行方法として「rundll32」コマンドを使用した「rundll32 PowrProf.dll,SetSuspendState」であったり、引数を追加した「rundll32 PowrProf.dll,SetSuspendState 0,0,0」をよく見かけます。
しかし、いくら引数を指定しても「rundll32」の仕組み上、SetSuspendStateがすべてtrue(1)で動作することになります。
ややこしくなるので詳細には書きませんが、ようするにWindows10では休止状態となるようにコマンドが実行されます。

実はそうじゃないのだ

pwr
関数を実際にトレースしてみた。

SetSuspendState(0,0,0)
を呼び出してるつもりなのだろうが
SetSuspendState(hHandle,hInstance,"0,0,0")
になってるのがお分かりいただけるだろうか

つまり、全て Boolean で true になるので、何をやっても、ウェイクイベント無効での、休止状態になるのである ・ω・

ちなみに何も指定しなかった場合も、NULLが引数になるのではなく、NULLへのポインタになるので、 True であることに変わりはない

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です