diff --git a/server/cmd/preconfig_win.go b/server/cmd/preconfig_win.go index 1a642f5..1d168f3 100644 --- a/server/cmd/preconfig_win.go +++ b/server/cmd/preconfig_win.go @@ -1,7 +1,28 @@ +//go:build windows // +build windows package main -func Preconfig(kill bool) { +import ( + "time" +) +const ( + EsSystemRequired = 0x00000001 + EsContinuous = 0x80000000 +) + +var pulseTime = 1 * time.Minute + +func Preconfig(kill bool) { + // don't sleep/hibernate windows + kernel32 := syscall.NewLazyDLL("kernel32.dll") + setThreadExecStateProc := kernel32.NewProc("SetThreadExecutionState") + pulse := time.NewTicker(pulseTime) + for { + select { + case <-pulse.C: + setThreadExecStateProc.Call(uintptr(EsSystemRequired)) + } + } }