7个版本
0.0.10 | 2023年12月11日 |
---|---|
0.0.9 | 2023年9月12日 |
0.0.5 | 2022年5月13日 |
150 在 嵌入式开发
每月 35 次下载
19KB
278 行
GPT解析库
gpt-parser 是一个Rust库,用于解析符合UEFI标准的GPT(GUID分区表)分区表。它提供了一个端序识别的只读解析器,可以在标准Rust环境和嵌入式Rust环境中使用。这意味着您可以在标准库不可用的资源受限系统上使用它。
功能
- 解析GPT分区表。
- 验证GPT头部签名。
- 验证分区表的CRC32校验和。
- 处理不同块大小的磁盘(例如,512字节或4K)。
- 提取有关分区信息,包括它们的UUID和属性。
- 支持
no_std
用法
要将此库用于您的Rust项目,请将其添加到您的 Cargo.toml
中的依赖项。
[dependencies]
gpt-parser = "*"
标准Rust环境
在标准Rust环境(带有标准库)中,您可以使用库如下所示
extern crate gpt_parser;
use gpt_parser::{GPTHeader, LBA512};
fn main() {
// Replace 'disk_image' with your disk image data.
let disk_image: &[u8] = /* Load your disk image here */;
// Create an LBA512 instance from your disk image.
let lba = LBA512::from_slice(&disk_image);
// Parse the GPT header.
let gpt_header = match GPTHeader::parse_gpt_header(&lba) {
Ok(header) => header,
Err(err) => {
eprintln!("Error parsing GPT header: {}", err);
return;
}
};
// Access information about the partitions.
let partitions = gpt_header.get_partitions(&lba);
for partition in partitions {
println!("Partition Type: {:?}", partition.part_type);
println!("Partition UUID: {:?}", partition.id);
println!("First LBA: {:?}", partition.first_lba);
println!("Last LBA: {:?}", partition.last_lba);
println!("Attributes: {:?}", partition.attr);
println!("Name: {:?}", partition.name);
}
}
将 'disk_image'
替换为您的GPT格式磁盘镜像的二进制数据。
嵌入式Rust环境
如果您想在嵌入式Rust环境中(无标准库)使用此库,请启用项目中 no_std
功能。
[dependencies]
gpt-parser = { version = "*", features = ["no_std"] }
在嵌入式环境中,您可能需要根据您特定的平台要求提供某些功能(例如,内存分配)的自定义实现。
测试
此库包含一组测试用例以确保其正确性。要运行测试,请使用以下命令
cargo test
许可证
此库是开源的,并按照MIT许可证的条款分发。
作者
此库由Alberto Ruiz开发([email protected])。
贡献
欢迎对此项目做出贡献。请按需提交问题和拉取请求。
致谢
此库基于UEFI标准的GPT分区表,并使用各种Rust库来实现其功能。
享受使用这个库来解析您项目中GPT分区表吧!如果您遇到任何问题或有改进建议,请随时联系。
依赖项
~110KB