Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich mit Go die Gesamtgröße eines Windows-Laufwerks ermitteln?

Wie kann ich mit Go die Gesamtgröße eines Windows-Laufwerks ermitteln?

Barbara Streisand
Barbara StreisandOriginal
2024-11-19 22:39:02440Durchsuche

How Can I Get the Total Size of a Windows Drive Using Go?

Bestimmen der Gesamtgröße eines Laufwerks in Windows mit Go

Um die Gesamtgröße eines Laufwerks in Windows mit Go abzurufen, vertiefen Sie sich in den Standard-Windows-API-Aufruf. insbesondere die Funktion GetDiskFreeSpaceExW() von kernel32.dll. Während diese Funktion zuvor verwendet wurde, um freien Speicherplatz zu erhalten, bietet sie auch Zugriff auf die Gesamtgröße des Laufwerks.

Dekodierung der GetDiskFreeSpaceExW()-Funktion

GetDiskFreeSpaceExW() hat mehrere Parameter:

  • Ein In-Parameter, der den Pfad des Laufwerks angibt
  • Drei Out-Parameter Erfassen der verfügbaren freien Bytes, der gesamten Bytes (Laufwerksgröße) und der gesamten freien Bytes

Implementieren der Lösung

In Ihrem Go-Code können Sie diese Lösung wie folgt implementieren:

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

Dieser Code liefert die gewünschte Ausgabe und zeigt sowohl den gesamten als auch den freien Speicherplatz auf dem angegebenen Laufwerk an.

Das obige ist der detaillierte Inhalt vonWie kann ich mit Go die Gesamtgröße eines Windows-Laufwerks ermitteln?. 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