Skip to content

Instantly share code, notes, and snippets.

@wendal
Forked from anonymous/gist:5319452
Last active July 21, 2018 02:22
Show Gist options
  • Save wendal/5319463 to your computer and use it in GitHub Desktop.
Save wendal/5319463 to your computer and use it in GitHub Desktop.
golang,在windows下获取磁盘空间数据
package main
import (
"log"
"net/http"
"syscall"
"unsafe"
)
func main() {
kernel32, err := syscall.LoadLibrary("Kernel32.dll")
if err != nil {
log.Panic(err)
}
defer syscall.FreeLibrary(kernel32)
GetDiskFreeSpaceEx, err := syscall.GetProcAddress(syscall.Handle(kernel32), "GetDiskFreeSpaceExW")
if err != nil {
log.Panic(err)
}
lpFreeBytesAvailable := int64(0)
lpTotalNumberOfBytes := int64(0)
lpTotalNumberOfFreeBytes := int64(0)
r, a, b := syscall.Syscall6(uintptr(GetDiskFreeSpaceEx), 4,
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr("C:"))),
uintptr(unsafe.Pointer(&lpFreeBytesAvailable)),
uintptr(unsafe.Pointer(&lpTotalNumberOfBytes)),
uintptr(unsafe.Pointer(&lpTotalNumberOfFreeBytes)), 0, 0)
log.Println(r, a, b, lpFreeBytesAvailable, lpTotalNumberOfBytes, lpTotalNumberOfFreeBytes)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment