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(), } }