1

如何在我拥有 device_handle 的分区的 uefi 中获取 uuid?例如,我正在遍历 uefi 中的分区,并且我想获取分区的 uuid。(这是一个 gpt 磁盘。)

4

2 回答 2

0

“GPT 分区条目”有 2 个 GUID

PartitionTypeGUID定义此分区的用途和类型的唯一 ID。零值定义未使用此分区条目。

UniquePartitionGUID每个分区条目唯一的 GUID。曾经创建的每个分区都将有一个唯一的 GUID。创建 GPT 分区条目时必须分配此 GUID。每当 GPT 标头中的 NumberOfPartitionEntries 增加以包含更大范围的地址时,就会创建 GPT 分区条目。

我认为您正在寻找UniquePartitionGUID

如果你有分区关联的 device_handle 那么你可以得到相应的 DevicePath 即使用 gnu-efi

DevicePath=DevicePathFromHandle(partition_handle);

接下来你解析 DevicePath 寻找一个节点如下

-Generic Device Path Header- where

Type = Media Device Path (0x04)
Sub type = Hard Drive (0x01)
... 
Partition Signature = partition GUID  <<<<<<<<
Partition Format = GPT (0x02)

在此结构中,您将找到所需的 GUID

参考 UEFI 规范 2.5(第 9 章)

于 2015-08-11T13:02:15.497 回答
0

在 GPT 标头中,偏移量 56 处是一个 16 字节的 DiskGUID,可用于唯一标识磁盘。(Efi 规范 5.3.2)。

于 2015-08-11T02:09:39.283 回答