Retrieving the Total Size of a Drive in Go on Windows
In previous efforts, you successfully determined the free space available on a drive. Building on this knowledge, you now seek to retrieve the total size of a specific drive, such as "C:."
To address this request, the GetDiskFreeSpaceExW() Windows API function from the kernel32.dll can be employed. This function requires an in-parameter (the drive path) and provides three out-parameters:
By allocating variables for the information you wish to obtain, you can utilize the GetDiskFreeSpaceExW() function. Here's an example implementation:
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) }
Running this code yields output such as:
1 0 Success. Free: 16795295744 Total: 145545281536 Available: 16795295744
This information provides a comprehensive view of the disk usage and capacity.
The above is the detailed content of How to Get the Total Size of a Windows Drive in Go?. For more information, please follow other related articles on the PHP Chinese website!