Heim >Backend-Entwicklung >Golang >Wie erhalte ich die Gesamtgröße eines Windows-Laufwerks in Go?

Wie erhalte ich die Gesamtgröße eines Windows-Laufwerks in Go?

Linda Hamilton
Linda HamiltonOriginal
2024-11-19 10:59:02583Durchsuche

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

Abrufen der Gesamtgröße eines Laufwerks in Go unter Windows

In früheren Versuchen haben Sie erfolgreich den verfügbaren freien Speicherplatz auf einem Laufwerk ermittelt. Aufbauend auf diesem Wissen versuchen Sie nun, die Gesamtgröße eines bestimmten Laufwerks wie „C:“ abzurufen.

Um diese Anfrage zu beantworten, kann die Windows-API-Funktion GetDiskFreeSpaceExW() aus der kernel32.dll verwendet werden beschäftigt. Diese Funktion erfordert einen In-Parameter (den Laufwerkspfad) und stellt drei Out-Parameter bereit:

  • Freie Bytes, die dem Aufrufer zur Verfügung stehen
  • Gesamtanzahl der Bytes (Festplattengröße)
  • Gesamtzahl der freien Bytes

Durch die Zuweisung von Variablen für die Informationen, die Sie erhalten möchten, können Sie die nutzen GetDiskFreeSpaceExW()-Funktion. Hier ist eine Beispielimplementierung:

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)
}

Das Ausführen dieses Codes führt zu einer Ausgabe wie:

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

Diese Informationen bieten einen umfassenden Überblick über die Festplattennutzung und -kapazität.

Das obige ist der detaillierte Inhalt vonWie erhalte ich die Gesamtgröße eines Windows-Laufwerks in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn