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