func GetVolumes()

in sys/windows/syscall_windows.go [214:238]


func GetVolumes() ([]string, error) {
	buffer := make([]uint16, MAX_PATH+1)

	var volumes []string

	h, err := _FindFirstVolume(&buffer[0], uint32(len(buffer)))
	if err != nil {
		return nil, errors.Wrap(err, "FindFirstVolumeW failed")
	}
	defer _FindVolumeClose(h)

	for {
		volumes = append(volumes, syscall.UTF16ToString(buffer))

		err = _FindNextVolume(h, &buffer[0], uint32(len(buffer)))
		if err != nil {
			if errors.Cause(err) == syscall.ERROR_NO_MORE_FILES {
				break
			}
			return nil, errors.Wrap(err, "FindNextVolumeW failed")
		}
	}

	return volumes, nil
}