ホームページ >バックエンド開発 >Golang >Go で Windows ドライブの合計サイズを取得する方法?

Go で Windows ドライブの合計サイズを取得する方法?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-19 10:59:02581ブラウズ

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

Windows 上の Go でドライブの合計サイズを取得する

これまでの作業で、ドライブ上で利用可能な空き容量を正常に特定できました。この知識に基づいて、「C:」などの特定のドライブの合計サイズを取得しようとします。

この要求に対処するには、kernel32.dll の GetDiskFreeSpaceExW() Windows API 関数を使用できます。雇用されている。この関数には in パラメータ (ドライブ パス) が必要で、次の 3 つの out パラメータが提供されます:

  • 呼び出し元が利用可能な空きバイト数
  • 合計バイト数 (ディスク サイズ)
  • 空きバイト総数

取得したい情報を変数に割り当てることで、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。