device_handle があるパーティションの uefi で uuid を取得するにはどうすればよいですか? たとえば、私は uefi のパーティションを反復処理しており、パーティションの uuid を取得したいと考えています。(これは gpt ディスクです。)
2 に答える
「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 章)
オフセット 56 の GPT ヘッダーには、ディスクを一意に識別するために使用できる 16 バイトの DiskGUID があります。(Efi 仕様 5.3.2)。