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
Libérer: 2024-11-21 08:02:10
original
421 Les gens l'ont consulté

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

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

1 0 Success.
Free: 16795295744 Total: 145545281536 Available: 16795295744
Copier après la connexion

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