github.com/decred/dcrlnd@v0.7.6/healthcheck/diskcheck_windows.go (about)

     1  package healthcheck
     2  
     3  import "golang.org/x/sys/windows"
     4  
     5  // AvailableDiskSpaceRatio returns ratio of available disk space to total
     6  // capacity for windows.
     7  func AvailableDiskSpaceRatio(path string) (float64, error) {
     8  	var free, total, avail uint64
     9  
    10  	pathPtr, err := windows.UTF16PtrFromString(path)
    11  	if err != nil {
    12  		return 0, err
    13  	}
    14  	err = windows.GetDiskFreeSpaceEx(pathPtr, &free, &total, &avail)
    15  
    16  	return float64(avail) / float64(total), nil
    17  }
    18  
    19  // AvailableDiskSpace returns the available disk space in bytes of the given
    20  // file system for windows.
    21  func AvailableDiskSpace(path string) (uint64, error) {
    22  	var free, total, avail uint64
    23  
    24  	pathPtr, err := windows.UTF16PtrFromString(path)
    25  	if err != nil {
    26  		return 0, err
    27  	}
    28  	err = windows.GetDiskFreeSpaceEx(pathPtr, &free, &total, &avail)
    29  
    30  	return avail, nil
    31  }