Incomplete Windows daemon support

This commit is contained in:
2025-04-05 18:54:27 -04:00
parent 94868f6bad
commit 6d9989b53a
11 changed files with 179 additions and 83 deletions
+29
View File
@@ -0,0 +1,29 @@
//go:build windows
package daemon
import (
"log"
"syscall"
"golang.org/x/sys/windows"
)
// pidToPath returns the path of the executable that has the given PID.
func pidToPath(pid uint32) string {
// get a handle to the process
const PROCESS_QUERY_INFORMATION = 0x0400
const PROCESS_VM_READ = 0x0010
hProcess, err := windows.OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ, false, pid)
if err != nil {
log.Fatalf("Failed to open process %d: %v", pid, err)
}
defer windows.CloseHandle(hProcess)
// query the process executable path
var pathBuf [syscall.MAX_PATH]uint16
pathLen := uint32(len(pathBuf))
windows.QueryFullProcessImageName(hProcess, 0, &pathBuf[0], &pathLen)
return syscall.UTF16ToString(pathBuf[:pathLen])
}