#disk #mount #windows #winapi #vhd #vhdx

vhdrs

一个轻量级的库,为在Windows系统上管理虚拟硬盘(VHD/VHDX)提供了一个直观的接口。它利用Windows API简化了如打开、附加、分离以及从VHD文件中检索信息等操作。

5个版本

0.1.4 2024年8月19日
0.1.3 2024年8月19日
0.1.2 2024年8月19日
0.1.1 2024年8月19日
0.1.0 2024年8月19日

#35Windows API

Download history 424/week @ 2024-08-14

每月424次下载

MIT 协议

72KB
1K SLoC

vhdrs

一个轻量级的库,为在Windows系统上管理虚拟硬盘(VHD/VHDX)提供了一个直观的接口。它利用Windows API简化了如打开、附加、分离以及从VHD文件中检索信息等操作。

功能

  • 打开VHD/VHDX文件:支持以只读和读写模式打开VHD/VHDX文件。
  • 挂载和卸载:将虚拟磁盘附加到系统并从系统中分离,支持持久和临时挂载。
  • 磁盘信息检索:获取虚拟磁盘的详细信息,包括其大小和唯一标识符。
  • 自动资源管理:处理清理操作,确保资源如文件句柄被正确释放。

使用方法

打开VHD/VHDX文件

您可以通过指定文件路径和所需的访问模式来打开VHD/VHDX文件。除非明确指定,否则文件类型将根据扩展名推断。

let vhd = vhdrs::Vhd::new("file.vhd", vhdrs::OpenMode::ReadOnly, None).unwrap();

附加VHD

要挂载VHD到系统驱动器,请使用attach方法。您可以选择使挂载在系统重启之间持续。

let mut vhd = vhdrs::Vhd::new("file.vhd", vhdrs::OpenMode::ReadOnly, None).unwrap();
let drive_letter = vhd.attach(false).unwrap();
println!("VHD mounted at drive: {}", drive_letter);

卸载VHD

要手动卸载VHD,请使用detach方法。手动分离仅适用于持久挂载;临时挂载在VHD实例释放时自动分离。

vhdrs::Vhd::detach("file.vhd").unwrap();

检索磁盘信息

您可以检索关于VHD的详细信息,包括其虚拟大小、物理大小、块大小和扇区大小。

let mut vhd = vhdrs::Vhd::new("file.vhd", vhdrs::OpenMode::ReadOnly, None).unwrap();
let disk_info = vhd.get_size().unwrap();
println!("Disk Info: {:?}", disk_info);

获取VHD标识符

此函数检索附加虚拟磁盘的唯一标识符,用于跟踪和管理多个VHD。

let mut vhd = vhdrs::Vhd::new("file.vhd", vhdrs::OpenMode::ReadOnly, None).unwrap();
let identifier = vhd.get_identifier().unwrap();
println!("VHD Identifier: {}", identifier);

许可证

此项目采用MIT许可证。有关更多详细信息,请参阅LICENSE文件。

贡献

欢迎贡献!如果您有任何改进建议或想要报告问题,请随时在项目的GitHub仓库上提交问题或拉取请求。

依赖项

~12–20MB
~260K SLoC