github.com/Ilhicas/nomad@v1.0.4-0.20210304152020-e86851182bc3/command/agent/host/windows.go (about) 1 // +build windows 2 3 package host 4 5 import ( 6 "os" 7 "syscall" 8 "unsafe" 9 ) 10 11 func uname() string { 12 return "" 13 } 14 15 func resolvConf() string { 16 return "" 17 } 18 19 func etcHosts() string { 20 return "" 21 } 22 23 func mountedPaths() (disks []string) { 24 for _, c := range "ABCDEFGHIJKLMNOPQRSTUVWXYZ" { 25 d := string(c) + ":\\" 26 _, err := os.Stat(d) 27 if err == nil { 28 disks = append(disks, d) 29 } 30 } 31 return disks 32 } 33 34 type df struct { 35 size int64 36 avail int64 37 } 38 39 func makeDf(path string) (*df, error) { 40 h, err := syscall.LoadDLL("kernel32.dll") 41 if err != nil { 42 return nil, err 43 } 44 45 c, err := h.FindProc("GetDiskFreeSpaceExW") 46 if err != nil { 47 return nil, err 48 } 49 50 df := &df{} 51 52 c.Call(uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(path))), 53 uintptr(unsafe.Pointer(&df.size)), 54 uintptr(unsafe.Pointer(&df.avail))) 55 56 return df, nil 57 } 58 59 func (d *df) total() uint64 { 60 return uint64(d.size) 61 } 62 63 func (d *df) available() uint64 { 64 return uint64(d.avail) 65 }