开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 481|回复: 19
收起左侧

[易语言支持库] vdisktool:不开模拟器,直接增删改雷电 / MuMu 的虚拟磁盘文件

[复制链接]
结帖率:0% (0/1)
发表于 3 天前 | 显示全部楼层 |阅读模式   广东省河源市
本帖最后由 hmlyn 于 2026-5-6 20:38 编辑

vdisktool 虚拟磁盘支持库
离线管理 VMDK / VDI 虚拟磁盘文件与 EXT 分区



主要用于 VMDK / VDI 虚拟磁盘文件的离线维护。比如在一些 Android 模拟器的数据盘场景里,也经常会遇到这类需求;但支持库本身操作的是 VMDK / VDI 文件,以及里面的 EXT 分区。

核心用途
不需要启动虚拟磁盘对应的虚拟机 / 模拟器环境,也不需要进入 Android 系统,直接在 Windows 上打开 VMDK / VDI 虚拟磁盘文件,对里面的 Linux / Android EXT 分区进行查看、搜索、提取、导入、覆盖、删除、改权限等操作。
模拟器启动通常要几秒到十几秒,而我们直接走底层解析,常见 VMDK / VDI 文件打开往往只要几十毫秒到秒级,适合频繁处理虚拟磁盘文件的场景。
底层使用 C++ 编写,直接解析虚拟磁盘结构和 EXT 文件系统,不依赖外部挂载工具。目录浏览、搜索、提取、导入等操作尽量走原生实现,兼顾速度和资源占用。
编译说明
  • vdisktool.fne 使用 MinGW / TDM-GCC 10.3.0 x86(C++17)编译
  • vdisktool_static.lib 使用 VS2015 / MSVC 19.0 x86(C++17、/MT)编译
  • 可用于易语言 VC6 静态编译
  • 不喜欢用支持库的,也可以直接使用 x86 版本 DLL

平时如果只是想改一个配置、替换一个文件、清理某个目录、批量预置数据,通常要先启动相关环境再进入文件管理器,比较麻烦。这个支持库走的是离线磁盘解析和 EXT 文件系统读写路线,磁盘文件没有被占用时就能直接操作。
适合什么场景
  • VMDK / VDI 虚拟磁盘文件离线维护
  • 模拟器已经启动,可以使用只读模式打开虚拟磁盘文件,实时查看模拟器系统文件变化。
  • 不启动对应环境,直接查看 Android 分区目录
  • 几十 GB 的虚拟磁盘文件,占用内存不到 20 MB,按需解析、按需读取
  • 从虚拟磁盘里提取文件到本机
  • 把本机文件导入到虚拟磁盘指定路径
  • 新建文件、新建目录、覆盖文件、追加内容、清空文件
  • 删除文件 / 目录,重命名,移动,复制
  • 修改 Linux 权限、UID、GID
  • 搜索文件,支持递归、通配符、忽略大小写、完整路径匹配
  • 查看文件字节、计算 MD5 / SHA1 / SHA256
  • 对 VMDK 做可回收空间估算、整理压缩
  • C++ 原生实现,打开 VMDK / VDI、读取目录和常规文件操作速度较快

截图
为了快速开发和上手,我顺手写了一个 C++ 的虚拟磁盘 GUI 工具,用来做可视化管理和调试。
图 1:磁盘菜单,包含可回收空间估算、整理当前 VMDK、Raw 读写等功能。
1.png

图 2:文件系统菜单,包含提取、导入、创建、查看、哈希、覆盖、追加、清空、重命名、移动、复制、删除、权限 / 属主、符号链接等功能。
2.png

主要功能
1. 离线打开虚拟磁盘
支持打开常见的 VMDK / VDI 虚拟磁盘文件。它不是挂载虚拟磁盘文件,而是直接解析 MBR 分区和 Linux EXT 文件系统。打开后可以像文件管理器一样浏览目录,查看文件大小、权限、UID、GID、修改时间等信息。
对一些 Android 虚拟磁盘场景来说,很多数据都在虚拟磁盘里的 EXT 分区中。只要对应环境已经完全关闭,就可以直接打开磁盘文件进行维护。
2. 文件增删改查
目前已经支持比较完整的文件系统操作:
  • 列目录、递归搜索
  • 提取文件到本机
  • 导入本机文件到虚拟磁盘
  • 新建普通文件、新建目录
  • 覆盖文件、追加文件、清空文件
  • 删除文件、删除目录、递归删除目录
  • 重命名、移动、复制文件或目录
  • 创建符号链接、硬链接、FIFO、Socket
  • 设置权限、UID、GID,支持递归设置

也就是说,常见的 Android 文件维护工作,不一定要等对应环境启动后再做。
3. 空间回收
支持库不是简单做 raw sector 复制,而是能识别 EXT 文件系统的已用 / 空闲区域。
目前提供:
  • 可回收空间估算:只扫描,不修改源文件
  • 原地整理并缩小 VMDK:直接整理当前 VMDK

当前发布版暂时不包含“文件级重建到新 VMDK”功能,后续版本会根据实际使用情况继续完善。
提供哪些形式
  • 32 位易语言支持库,方便接入易语言项目
  • C ABI X86 X64 DLL:vdisktool.dll
  • 原生 GUI:vdisktool-gui.exe
  • 支持 C / C++、C#、Go、Python、易语言示例
  • GUI 只是配套的可视化管理工具,方便直接查看和操作虚拟磁盘

当前支持范围
  • VMDK:当前主要支持未压缩 monolithicSparse 类型
  • VDI:支持普通动态 / 固定 VDI
  • 分区:当前支持 MBR 分区发现
  • 文件系统:支持 Linux EXT 分区的读取和部分写入
  • Windows 中文路径:DLL 提供 UTF-16 路径接口

简单说
这个支持库更像是一个“Android 虚拟磁盘离线文件管理能力”。
比较大的价值是:不用启动对应环境,就能直接对磁盘里的文件做查看、导出、导入、覆盖、删除、改权限等操作。
如果你经常需要处理 VMDK / VDI 数据盘、批量预置文件、调试 Android 文件系统内容,或者想把虚拟磁盘整理变小,可以试试看。
交流群
有问题、建议或者想交流用法,可以加 QQ 群:825683153
更新说明V1.0.1:
重新优化 x86 / x64 DLL、CLI、GUI、易语言动态支持库体积

更新说明V1.0.2:
支持VDI虚拟磁盘瘦身功能。
更新说明V1.0.3:
收紧关闭磁盘命令,如果有打开EXT分区表,将会自动关闭所有已打开EXT,彻底释放磁盘占用问题

游客,如果您要查看本帖隐藏内容请回复







结帖率:0% (0/1)

签到天数: 8 天

 楼主| 发表于 前天 03:01 | 显示全部楼层   广东省河源市
v1.0.4 更新说明

1. 修复VDI 导入文件问题。
2. 修复部分 Android 12 / 新式 EXT4 数据分区无法新增、删除、写入文件的问题。
3. 现在已支持常见 64bit / metadata_csum EXT4 文件系统写入。
4. 完善 EXT4 写入时的元数据同步更新,包括:
   group descriptor 校验、
   inode 校验、
   位图校验、
   目录块校验、
   superblock 空闲计数与校验。

vdisktool-v1.0.4.zip

1.77 MB, 下载次数: 3, 下载积分: 精币 -2 枚

回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 8 天

 楼主| 发表于 前天 17:30 | 显示全部楼层   广东省河源市
本帖最后由 hmlyn 于 2026-5-8 04:36 编辑
hmlyn 发表于 2026-5-7 03:01
v1.0.4 更新说明

1. 修复VDI 导入文件问题。

后续更新都只发布群里,v1.0.5更新内容比较多。就不发论坛了。v1.0.5 重点更新文件传输能力增强添加文件 / 提取文件 进一步优化为流式读入、流式写出,处理大文件时不再走一次性整块读写,内存占用更稳,更适合 GB 级文件导入导出。新增目录级导入导出新增 添加目录 / 提取目录,支持整目录递归导入、递归导出,不再只能一个文件一个文件地处理。目录传输支持多线程目录导入、目录导出已支持多线程处理,可指定线程数;面对大量小文件时,整体效率相比单线程有明显提升。新增异步传输支持新增异步文件/目录导入导出接口,支持后台执行、实时获取传输进度、等待完成、主动取消,更适合 GUI 工具或需要保持界面响应的场景。新增传输进度能力现在可以获取当前或最近一次传输进度,包括总字节数、已传输字节数、当前文件进度、文件数量、当前路径等,便于做进度条、状态提示和日志输出。新增空间预检查与自动扩容导入前可先检测 EXT 分区总空间、可用空间、块大小、inode 等信息;当目标分区空间不足时,支持自动扩容虚拟磁盘和分区,减少因空间不足导致的导入失败。GUI 体验同步增强GUI 版本已同步加入导入导出进度显示、空间不足提示、自动扩容提示,以及更直观的文件大小单位显示,日常使用更方便。
回复 支持 反对

使用道具 举报

签到天数: 9 天

发表于 前天 12:17 | 显示全部楼层   江西省吉安市
感谢分享...
回复 支持 反对

使用道具 举报

结帖率:100% (13/13)

签到天数: 2 天

发表于 3 天前 | 显示全部楼层   四川省成都市
这个真牛逼了,必须支持一下,很早就想要了
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 7 天

发表于 3 天前 | 显示全部楼层   辽宁省朝阳市
{:7_436:}{:7_436:}{:7_436:}{:7_436:}
回复 支持 反对

使用道具 举报

签到天数: 3 天

发表于 3 天前 | 显示全部楼层   山西省吕梁市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:75% (3/4)

签到天数: 8 天

发表于 3 天前 | 显示全部楼层   河北省廊坊市
感谢分享
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 3 天前 | 显示全部楼层   山东省济南市
多谢楼主分享
回复 支持 反对

使用道具 举报

结帖率:25% (6/24)

签到天数: 3 天

发表于 3 天前 | 显示全部楼层   黑龙江省大庆市
这个牛蛙
回复 支持 反对

使用道具 举报

结帖率:100% (6/6)

签到天数: 6 天

发表于 3 天前 | 显示全部楼层   四川省德阳市
太好了,可以不用启动模拟器就操作里面的文件
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表