Maison >développement back-end >Golang >Comment déterminer la capacité totale d'un disque à l'aide des API Go et Windows ?
Détermination de la capacité du disque sous Windows à l'aide des API Go
Dans une question précédente, vous avez demandé des conseils pour obtenir l'espace disque disponible dans Go à l'aide de Windows Appels API. Cette réponse a démontré l'utilisation de la fonction GetDiskFreeSpaceExW() de kernel32.dll pour récupérer ces informations.
Pour approfondir votre exploration, vous souhaitez maintenant déterminer la taille totale d'un lecteur spécifique, tel que C:. La fonction GetDiskFreeSpaceExW() peut également répondre à ce besoin.
Signature de GetDiskFreeSpaceExW()
La signature de cette fonction est la suivante :
BOOL GetDiskFreeSpaceExW( LPCWSTR lpDirectoryName, PULARGE_INTEGER lpFreeBytesAvailableToCaller, PULARGE_INTEGER lpTotalNumberOfBytes, PULARGE_INTEGER lpTotalNumberOfFreeBytes );
Il prend un paramètre d'entrée (le chemin du lecteur) et renvoie trois paramètres de sortie : les octets libres disponibles pour le l'appelant, la taille totale du disque et le nombre total d'octets libres.
Utilisation dans Go
Pour utiliser cette fonction dans Go, vous pouvez suivre ces étapes :
kernelDLL := syscall.MustLoadDLL("kernel32.dll")
GetDiskFreeSpaceExW := kernelDLL.MustFindProc("GetDiskFreeSpaceExW")
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)
Exemple de sortie
L'exécution du code fourni produira une sortie similaire à celle-ci :
1 0 Success. Free: 16795295744 Total: 145545281536 Available: 16795295744
Cette sortie indique que le C : le lecteur a une taille totale de 145545281536 octets.
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!