29 lines
659 B
Go
29 lines
659 B
Go
package system_check
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"golang.org/x/sys/windows"
|
|
)
|
|
|
|
type WindowsSystemCheckTools struct {
|
|
/*
|
|
* Win32 API
|
|
*/
|
|
Kernel32 *windows.LazyDLL
|
|
/*
|
|
* Windows memory information
|
|
*/
|
|
ProcGlobalMemoryStatusEx *windows.LazyProc
|
|
}
|
|
|
|
func getWindowsTools() WindowsSystemCheckTools {
|
|
kernel32 := sync.OnceValue(func() *windows.LazyDLL { return windows.NewLazySystemDLL("kernel32.dll") })
|
|
procGlobalMemoryStatusEx := sync.OnceValue(func() *windows.LazyProc { return kernel32().NewProc("GlobalMemoryStatusEx") })
|
|
|
|
return WindowsSystemCheckTools{
|
|
Kernel32: kernel32(),
|
|
ProcGlobalMemoryStatusEx: procGlobalMemoryStatusEx(),
|
|
}
|
|
}
|