首頁 >後端開發 >Golang >如何在 Go 中取得 Windows 磁碟機的總大小?

如何在 Go 中取得 Windows 磁碟機的總大小?

Linda Hamilton
Linda Hamilton原創
2024-11-19 10:59:02582瀏覽

How to Get the Total Size of a Windows Drive in Go?

在Windows 上的Go 中擷取磁碟機的總大小

在先前的工作中,您成功確定了磁碟機上的可用空間。基於這些知識,您現在尋求檢索特定磁碟機的總大小,例如“C:”​​。

要解決此要求,可以使用 kernel32.dll 中的 GetDiskFreeSpaceExW() Windows API 函數:受僱。此函數需要一個輸入參數(驅動器路徑)並提供三個輸出參數:

  • 呼叫者可用的空閒位元組
  • 總位元組數(磁碟大小)
  • 空閒位元組總數

透過為您希望取得的資訊指派變量,您可以使用GetDiskFreeSpaceExW() 函數。以下是範例實作:

import (
    "syscall"
    "unsafe"
    "fmt"
)

func main() {
    kernelDLL, err := syscall.LoadDLL("kernel32.dll")
    if err != nil {
        panic(err)
    }

    getDiskFreeSpaceExW, err := kernelDLL.FindProc("GetDiskFreeSpaceExW")
    if err != nil {
        panic(err)
    }
    
    var free, total, avail int64

    path := "c:\"
    r1, r2, lastErr := getDiskFreeSpaceExW.Call(
        uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(path))),
        uintptr(unsafe.Pointer(&free)),
        uintptr(unsafe.Pointer(&total)),
        uintptr(unsafe.Pointer(&avail)),
    )

    fmt.Println(r1, r2, lastErr)
    fmt.Println("Free:", free, "Total:", total, "Available:", avail)
}

執行此程式碼會產生以下輸出:

1 0 Success.
Free: 16795295744 Total: 145545281536 Available: 16795295744

此資訊提供了磁碟使用情況和容量的全面視圖。

以上是如何在 Go 中取得 Windows 磁碟機的總大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn