要使用Go 擷取Windows 中磁碟機的總大小,請深入研究標準Windows API 呼叫,特別是kernel32. dll 中的GetDiskFreeSpaceExW() 函數。雖然此函數以前用於獲取可用空間,但它還提供對驅動器總大小的存取。
GetDiskFreeSpaceExW() 有幾個參數:
在Go在程式碼中,您可以如下實作此解決方案:
package main import ( "fmt" "syscall" "unsafe" ) func main() { kernelDLL, err := syscall.LoadDLL("kernel32.dll") if err != nil { fmt.Println("Failed to load kernel32.dll:", err) return } GetDiskFreeSpaceExW, err := kernelDLL.FindProc("GetDiskFreeSpaceExW") if err != nil { fmt.Println("Failed to find GetDiskFreeSpaceExW proc:", err) return } var free, total, avail int64 path := "c:\" r1, r2, _ := GetDiskFreeSpaceExW.Call( uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(path))), uintptr(unsafe.Pointer(&free)), uintptr(unsafe.Pointer(&total)), uintptr(unsafe.Pointer(&avail)), ) fmt.Println("Free:", free, "Total:", total, "Available:", avail) if r1 == 1 && r2 == 0 { fmt.Println("Success.") } else { fmt.Println("Failed:", syscall.Errno(r1)) } }
此程式碼將提供所需的輸出,顯示指定磁碟機上的總空間和可用空間。
以上是如何使用 Go 取得 Windows 磁碟機的總大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!