Home >Backend Development >Golang >How to Calculate the Total Size of a Windows Drive Using Go?

How to Calculate the Total Size of a Windows Drive Using Go?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-21 08:02:10413browse

How to Calculate the Total Size of a Windows Drive Using Go?

Calculating the Total Size of a Drive in Go on Windows

To obtain the total size of a specific drive in Go on Windows, the standard Windows API call to be used is GetDiskFreeSpaceExW() from kernel32.dll. This function retrieves the free space available to the caller, along with the total number of bytes on the disk and the total number of free bytes.

By providing pointers for each piece of information required, the GetDiskFreeSpaceExW() function can be utilized to retrieve the total size of a drive.

Here's an example code demonstrating its usage:

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

Running the above code will generate an output similar to:

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

The above is the detailed content of How to Calculate the Total Size of a Windows Drive Using Go?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn