Maison > développement back-end > Golang > le corps du texte

Comment puis-je obtenir la taille totale d'un lecteur Windows à l'aide de Go ?

Barbara Streisand
Libérer: 2024-11-19 22:39:02
original
438 Les gens l'ont consulté

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

Détermination de la taille totale d'un lecteur sous Windows à l'aide de Go

Pour récupérer la taille totale d'un lecteur sous Windows à l'aide de Go, plongez dans l'appel API Windows standard, spécifiquement la fonction GetDiskFreeSpaceExW() de kernel32.dll. Si cette fonction était auparavant utilisée pour obtenir de l'espace libre, elle donne également accès à la taille totale du disque.

Décodage de la fonction GetDiskFreeSpaceExW()

GetDiskFreeSpaceExW() a plusieurs paramètres :

  • Un paramètre d'entrée spécifiant le chemin du lecteur
  • Trois paramètres de sortie capturer les octets libres disponibles, le nombre total d'octets (taille du lecteur) et le total d'octets libres

Implémentation de la solution

Dans votre code Go, vous pouvez implémenter cette solution comme suit :

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))
    }
}
Copier après la connexion

Ce code fournira la sortie souhaitée, affichant à la fois l'espace total et libre sur le lecteur spécifié.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal