在UEFI中获取分区的分区uuid的最简单方法是什么?

时间:2015-06-27 14:34:42

标签: uuid partition uefi

我怎样才能在uefi中得到一个我有device_handle的分区的uuid?  例如,我正在遍历uefi中的分区,我想获得分区的uuid。 (这是一张gpt磁盘。)

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

A" GPT分区录入"有2个GUID

  

PartitionTypeGUID 唯一ID,用于定义此目的和类型   划分。值为零定义此分区条目不是   被使用。

     

UniquePartitionGUID 每个分区条目唯一的GUID。   创建的每个分区都有一个唯一的GUID。这个GUID必须   在创建GPT分区条目时分配。 GPT分区   只要GPT中的NumberOfPartitionEntries,就会创建条目   标题增加,包括更大范围的地址。

我认为您正在寻找 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章)