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  }