implements memory information on windows.
This commit is contained in:
parent
8c60a8f8c5
commit
ab22e78f2d
|
@ -2,9 +2,42 @@
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"syscall"
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
modKernel32 = syscall.NewLazyDLL("kernel32.dll")
|
||||||
|
globalMemoryStatusEx = modKernel32.NewProc("GlobalMemoryStatusEx")
|
||||||
|
)
|
||||||
|
|
||||||
|
type MEMORYSTATUSEX struct {
|
||||||
|
cbSize uint32
|
||||||
|
dwMemoryLoad uint32
|
||||||
|
ullTotalPhys uint64 // in bytes
|
||||||
|
ullAvailPhys uint64
|
||||||
|
ullTotalPageFile uint64
|
||||||
|
ullAvailPageFile uint64
|
||||||
|
ullTotalVirtual uint64
|
||||||
|
ullAvailVirtual uint64
|
||||||
|
ullAvailExtendedVirtual uint64
|
||||||
|
}
|
||||||
|
|
||||||
func (m Mem) Virtual_memory() (Virtual_memory, error) {
|
func (m Mem) Virtual_memory() (Virtual_memory, error) {
|
||||||
ret := Virtual_memory{}
|
ret := Virtual_memory{}
|
||||||
|
|
||||||
|
var memInfo MEMORYSTATUSEX
|
||||||
|
memInfo.cbSize = uint32(unsafe.Sizeof(memInfo))
|
||||||
|
mem, _, _ := globalMemoryStatusEx.Call(uintptr(unsafe.Pointer(&memInfo)))
|
||||||
|
if mem == 0 {
|
||||||
|
return ret, syscall.GetLastError()
|
||||||
|
}
|
||||||
|
|
||||||
|
ret.Total = memInfo.ullTotalPhys
|
||||||
|
ret.Available = memInfo.ullAvailPhys
|
||||||
|
ret.UsedPercent = float64(memInfo.dwMemoryLoad)
|
||||||
|
ret.Used = ret.Total - ret.Available
|
||||||
return ret, nil
|
return ret, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue