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.
GetDiskFreeSpaceExW() a plusieurs paramètres :
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)) } }
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!