mirror of
https://github.com/shtorm-7/sing-box-extended.git
synced 2026-09-15 21:00:27 +00:00
47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
package powerreport
|
|
|
|
import (
|
|
"golang.org/x/sys/windows"
|
|
)
|
|
|
|
func filetimeDuration(value windows.Filetime) int64 {
|
|
return (int64(value.HighDateTime)<<32 | int64(value.LowDateTime)) * 100
|
|
}
|
|
|
|
func readSystemUsage() systemUsage {
|
|
var creationTime, exitTime, kernelTime, userTime windows.Filetime
|
|
err := windows.GetProcessTimes(windows.CurrentProcess(), &creationTime, &exitTime, &kernelTime, &userTime)
|
|
if err != nil {
|
|
return systemUsage{}
|
|
}
|
|
usage := systemUsage{
|
|
valid: true,
|
|
userTime: filetimeDuration(userTime),
|
|
systemTime: filetimeDuration(kernelTime),
|
|
}
|
|
var ioCounters processIOCounters
|
|
err = getProcessIoCounters(windows.CurrentProcess(), &ioCounters)
|
|
if err == nil {
|
|
usage.diskBytesWritten = ioCounters.writeTransferCount
|
|
}
|
|
return usage
|
|
}
|
|
|
|
func readClocks() (absoluteTime int64, continuousTime int64) {
|
|
if procQueryInterruptTime.Find() != nil {
|
|
return 0, 0
|
|
}
|
|
var unbiasedTime uint64
|
|
err := queryUnbiasedInterruptTime(&unbiasedTime)
|
|
if err != nil {
|
|
return 0, 0
|
|
}
|
|
var interruptTime uint64
|
|
queryInterruptTime(&interruptTime)
|
|
return int64(unbiasedTime) * 100, int64(interruptTime) * 100
|
|
}
|
|
|
|
func readInterfaceCounters() map[string]interfaceCounters {
|
|
return nil
|
|
}
|