Windowsが手動スリープのSetThreadExecutionStateをブロック
SetThreadExecutionState 関数は、Windows が提供する API 関数で、システムに電源管理におけるスリープ モードを許可しないことや禁止することを通知します。この関数は、異なるパラメーターを設定することで、システムの動作を制御できます。
手動スリープを抑制するには、次のパラメーターが使用できます。
- ES_CONTINUOUS:スリープ状態への移行を継続的に禁止します。この引数を指定すると、システムに常にアクティブ状態を維持するように指示し、スリープ状態への移行が禁止されます。SetThreadExecutionState(ES_CONTINUOUS)を呼び出すことで実現できます。
- ES_SYSTEM_REQUIRED:システムをスリープモードに入らせない。このパラメータを使用すると、システムをスリープモードに入らせないが、スクリーンセーバを実行できます。SetThreadExecutionState(ES_SYSTEM_REQUIRED)を呼び出すことで実現できます。
セットスレッドエグゼキューションステート関数を使用してスリープ状態を阻止することは、システムの電力管理に影響が出る可能性があることに留意が必要です。従って、この関数は、実需要やシナリオに応じて合理的に呼び出す必要があり、不要な電力消費を避けるようにする必要があります。
スレッドの手動スリープを防ぐSetThreadExecutionState関数の使用を説明するサンプルコードを以下に示します。
#include <Windows.h>
int main()
{
// 阻止手动睡眠
SetThreadExecutionState(ES_CONTINUOUS);
// 保持程序运行
while(true)
{
// 程序逻辑
}
return 0;
}
上述の例では、SetThreadExecutionState(ES_CONTINUOUS)を呼び出しシステムの休止状態を解除しプログラムを実行状態に保ちます。