源于golang群中再次提到windows下获取磁盘空间的方法
由于golang的api并非完全跨平台, golang本身并没有直接提供windows下的方式
syscall.Syscall系列方法
当前共5个方法
syscall.Syscall
syscall.Syscall6
syscall.Syscall9
syscall.Syscall12
syscall.Syscall15
分别对应 3个/6个/9个/12个/15个参数或以下的调用
参数都形如
syscall.Syscall(trap, nargs, a1, a2, a3)
第二个参数, nargs 即参数的个数,一旦传错, 轻则调用失败,重者直接APPCARSH
多余的参数, 用0代替
调用示例
获取磁盘空间
//首先,准备输入参数, GetDiskFreeSpaceEx需要4个参数, 可查MSDN
dir := "C:"
lpFreeBytesAvailable := int64(0) //注意类型需要跟API的类型相符
lpTotalNumberOfBytes := int64(0)
lpTotalNumberOfFreeBytes := int64(0)
//获取方法的引用
kernel32, err := syscall.LoadLibrary("Kernel32.dll") // 严格来说需要加上 defer syscall.FreeLibrary(kernel32)
GetDiskFreeSpaceEx, err := syscall.GetProcAddress(syscall.Handle(kernel32), "GetDis