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  }