func diskUsage(path string) (disk DiskStatus, err error) {
	kernel32, err := syscall.LoadLibrary("Kernel32.dll")
	if err != nil {
		return
	}
	defer syscall.FreeLibrary(kernel32)
	getDiskFreeSpaceEx, err := syscall.GetProcAddress(syscall.Handle(kernel32), "GetDiskFreeSpaceExW")
	if err != nil {
		return
	}
	lpFreeBytesAvailable := int64(0)
	lpTotalNumberOfBytes := int64(0)
	lpTotalNumberOfFreeBytes := int64(0)
	_, _, b := syscall.Syscall6(uintptr(getDiskFreeSpaceEx), 4,
		uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(path))),
		uintptr(unsafe.Pointer(&lpFreeBytesAvailable)),
		uintptr(unsafe.Pointer(&lpTotalNumberOfBytes)),
		uintptr(unsafe.Pointer(&lpTotalNumberOfFreeBytes)), 0, 0)
	if b > 0 {
		err = errors.Errorf("disk usage error: errno=%d", b)
		return
	}
	disk.All = uint64(lpTotalNumberOfBytes)
	disk.Free = uint64(lpTotalNumberOfFreeBytes)
	disk.Used = disk.All - disk.Free
	return
}
get Windows disk usage
package statfs
import (
	"syscall"
	"unsafe"
	"github.com/go-errors/errors"
)