Maison  >  Article  >  développement back-end  >  Comment obtenir la taille totale d'un lecteur Windows avec Go ?

Comment obtenir la taille totale d'un lecteur Windows avec Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-19 10:59:02526parcourir

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

Récupération de la taille totale d'un lecteur dans Go sous Windows

Au cours d'efforts précédents, vous avez réussi à déterminer l'espace libre disponible sur un lecteur. En vous appuyant sur ces connaissances, vous cherchez maintenant à récupérer la taille totale d'un lecteur spécifique, tel que "C:."

Pour répondre à cette requête, la fonction API Windows GetDiskFreeSpaceExW() du kernel32.dll peut être employé. Cette fonction nécessite un paramètre d'entrée (le chemin du lecteur) et fournit trois paramètres de sortie :

  • Octets libres disponibles pour l'appelant
  • Nombre total d'octets (taille du disque)
  • Nombre total d'octets libres

En allouant des variables pour les informations que vous souhaitez obtenir, vous pouvez utiliser la fonction GetDiskFreeSpaceExW(). Voici un exemple d'implémentation :

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

L'exécution de ce code produit un résultat tel que :

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

Ces informations fournissent une vue complète de l'utilisation et de la capacité du disque.

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