in metric/system/diskio/diskstat_windows_helper.go [151:176]
func getLogicalDriveStrings() ([]logicalDrive, error) {
lpBuffer := make([]byte, 254)
r1, _, e1 := syscall.SyscallN(procGetLogicalDriveStringsW.Addr(), uintptr(len(lpBuffer)), uintptr(unsafe.Pointer(&lpBuffer[0])))
if r1 == 0 {
err := e1
if e1 != errorSuccess {
err = syscall.EINVAL
}
return nil, err
}
logicalDrives := make([]logicalDrive, 0, len(lpBuffer))
for _, v := range lpBuffer {
if v >= 65 && v <= 90 {
s := string(v)
if s == "A" || s == "B" {
continue
}
path := s + ":"
drive := logicalDrive{path, `\\.\` + path}
if isValidLogicalDrive(path) {
logicalDrives = append(logicalDrives, drive)
}
}
}
return logicalDrives, nil
}