code: func getProcessEntry(pid int) (pe *syscall.ProcessEntry32, err error) {
  	snapshot, err := syscall.CreateToolhelp32Snapshot(syscall.TH32CS_SNAPPROCESS, 0)
  	if err != nil {
  		return nil, err
  	}
  	defer syscall.CloseHandle(syscall.Handle(snapshot))
  
  	var processEntry syscall.ProcessEntry32
  	processEntry.Size = uint32(unsafe.Sizeof(processEntry))
  	err = syscall.Process32First(snapshot, &processEntry)
  	if err != nil {
  		return nil, err
  	}
  
  	for {
  		if processEntry.ProcessID == uint32(pid) {
  			pe = &processEntry
  			return
  		}
  
  		err = syscall.Process32Next(snapshot, &processEntry)
  		if err != nil {
  			return nil, err
  		}
  	}
  }
docs: // re-implementation of private function in https://github.com/golang/go/blob/master/src/syscall/syscall_windows.go#L945