Maison >développement back-end >Golang >Comment calculer la taille totale d'un lecteur Windows à l'aide de Go ?

Comment calculer la taille totale d'un lecteur Windows à l'aide de Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-21 08:02:10450parcourir

How to Calculate the Total Size of a Windows Drive Using Go?

Calcul de la taille totale d'un lecteur dans Go sous Windows

Pour obtenir la taille totale d'un lecteur spécifique dans Go sous Windows, le L'appel API Windows standard à utiliser est GetDiskFreeSpaceExW() à partir de kernel32.dll. Cette fonction récupère l'espace libre disponible pour l'appelant, ainsi que le nombre total d'octets sur le disque et le nombre total d'octets libres.

En fournissant des pointeurs pour chaque information requise, la fonction GetDiskFreeSpaceExW() peut être utilisé pour récupérer la taille totale d'un lecteur.

Voici un exemple de code démontrant son utilisation :

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

func main() {
    kernelDLL, _ := syscall.LoadDLL("kernel32.dll")
    GetDiskFreeSpaceExW, _ := kernelDLL.FindProc("GetDiskFreeSpaceExW")

    var free int64
    var total int64
    var 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)
}

L'exécution du code ci-dessus générera une sortie similaire à :

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

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!

Déclaration:
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