// +build windows package windows import ( "syscall" "unsafe" ) var ( kernel32 = syscall.NewLazyDLL("kernel32.dll") procCreateToolhelp32Snapshot = kernel32.NewProc("CreateToolhelp32Snapshot") procProcess32First = kernel32.NewProc("Process32FirstW") procModule32First = kernel32.NewProc("Module32FirstW") procCloseHandle = kernel32.NewProc("CloseHandle") ) func CreateToolhelp32Snapshot(flags, processId uint32) HANDLE { ret, _, _ := procCreateToolhelp32Snapshot.Call( uintptr(flags), uintptr(processId)) if ret <= 0 { return HANDLE(0) } return HANDLE(ret) } func Process32First(snapshot HANDLE, pe *PROCESSENTRY32) bool { ret, _, _ := procProcess32First.Call( uintptr(snapshot), uintptr(unsafe.Pointer(pe))) return ret != 0 } func Module32First(snapshot HANDLE, me *MODULEENTRY32) bool { ret, _, _ := procModule32First.Call( uintptr(snapshot), uintptr(unsafe.Pointer(me))) return ret != 0 } func CloseHandle(object HANDLE) bool { ret, _, _ := procCloseHandle.Call( uintptr(object)) return ret != 0 }