Skip to content

Instantly share code, notes, and snippets.

Created April 5, 2013 13:55
Show Gist options
  • Save anonymous/5319452 to your computer and use it in GitHub Desktop.
Save anonymous/5319452 to your computer and use it in GitHub Desktop.
尝试通过syscall获取win32下的磁盘空间信息
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.Syscall(uintptr(GetDiskFreeSpaceEx),
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr("C:"))),
uintptr(unsafe.Pointer(&lpFreeBytesAvailable)),
uintptr(unsafe.Pointer(&lpTotalNumberOfBytes)),
uintptr(unsafe.Pointer(&lpTotalNumberOfFreeBytes)))
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