//go:build windows package capacity import ( "fmt" "syscall" "unsafe" ) var getDiskFreeSpaceEx = syscall.NewLazyDLL("kernel32.dll").NewProc("GetDiskFreeSpaceExW") func filesystemFreeBytes(path string) (int64, error) { pathUTF16, err := syscall.UTF16PtrFromString(path) if err != nil { return 0, err } var available uint64 result, _, callErr := getDiskFreeSpaceEx.Call( uintptr(unsafe.Pointer(pathUTF16)), uintptr(unsafe.Pointer(&available)), 0, 0, ) if result == 0 { return 0, fmt.Errorf("GetDiskFreeSpaceExW: %w", callErr) } if available > uint64(^uint64(0)>>1) { return int64(^uint64(0) >> 1), nil } return int64(available), nil }