github.com/Serizao/go-winio@v0.0.0-20230906082528-f02f7f4ad6e8/pkg/process/zsyscall_windows.go (about) 1 //go:build windows 2 3 // Code generated by 'go generate' using "github.com/Serizao/go-winio/tools/mkwinsyscall"; DO NOT EDIT. 4 5 package process 6 7 import ( 8 "syscall" 9 "unsafe" 10 11 "golang.org/x/sys/windows" 12 ) 13 14 var _ unsafe.Pointer 15 16 // Do the interface allocations only once for common 17 // Errno values. 18 const ( 19 errnoERROR_IO_PENDING = 997 20 ) 21 22 var ( 23 errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING) 24 errERROR_EINVAL error = syscall.EINVAL 25 ) 26 27 // errnoErr returns common boxed Errno values, to prevent 28 // allocations at runtime. 29 func errnoErr(e syscall.Errno) error { 30 switch e { 31 case 0: 32 return errERROR_EINVAL 33 case errnoERROR_IO_PENDING: 34 return errERROR_IO_PENDING 35 } 36 // TODO: add more here, after collecting data on the common 37 // error values see on Windows. (perhaps when running 38 // all.bat?) 39 return e 40 } 41 42 var ( 43 modkernel32 = windows.NewLazySystemDLL("kernel32.dll") 44 45 procK32EnumProcesses = modkernel32.NewProc("K32EnumProcesses") 46 procK32GetProcessMemoryInfo = modkernel32.NewProc("K32GetProcessMemoryInfo") 47 procQueryFullProcessImageNameW = modkernel32.NewProc("QueryFullProcessImageNameW") 48 ) 49 50 func enumProcesses(pids *uint32, bufferSize uint32, retBufferSize *uint32) (err error) { 51 r1, _, e1 := syscall.Syscall(procK32EnumProcesses.Addr(), 3, uintptr(unsafe.Pointer(pids)), uintptr(bufferSize), uintptr(unsafe.Pointer(retBufferSize))) 52 if r1 == 0 { 53 err = errnoErr(e1) 54 } 55 return 56 } 57 58 func getProcessMemoryInfo(process handle, memCounters *ProcessMemoryCountersEx, size uint32) (err error) { 59 r1, _, e1 := syscall.Syscall(procK32GetProcessMemoryInfo.Addr(), 3, uintptr(process), uintptr(unsafe.Pointer(memCounters)), uintptr(size)) 60 if r1 == 0 { 61 err = errnoErr(e1) 62 } 63 return 64 } 65 66 func queryFullProcessImageName(process handle, flags uint32, buffer *uint16, bufferSize *uint32) (err error) { 67 r1, _, e1 := syscall.Syscall6(procQueryFullProcessImageNameW.Addr(), 4, uintptr(process), uintptr(flags), uintptr(unsafe.Pointer(buffer)), uintptr(unsafe.Pointer(bufferSize)), 0, 0) 68 if r1 == 0 { 69 err = errnoErr(e1) 70 } 71 return 72 }