如何获取 EFI 系统分区的卷名

How can I get volume name for EFI system partition?

本文关键字:分区 系统 EFI 何获取 获取      更新时间:2023-10-16

我有一台带有GPT驱动器的Windows机器。
我有一个 EFI 系统分区的 DOS 设备名称作为 bcdedit 的输出。
我想打开这个分区的句柄,并通过QueryDosDevice()获取DOS名称,以与我已经拥有的DOS名称进行比较。
我尝试使用 FindFirstVolume/FindNextVolume 查找卷名以从 QueryDosDevice 获取 DOS 名称,但没有找到 EFI 系统分区的卷。WMI 也没有此分区的卷。

如何从C++代码中获取 EFI 系统分区的卷名以在 QueryDosDevice 中使用它?

试试这个。下载并安装 WinObj(来自 MS technet)。在 \Device 目录中查找 EFI 系统分区的逻辑设备名称。请注意,\Device 目录中的逻辑设备名称采用 DeviceHarddisk<N>Partition<M> 格式,其中 N 是硬盘号,M 是分区号。注意 M 等于零表示整个硬盘,M> 0 表示单个分区。数字N与您在磁盘管理器(diskmgmt.msc)和diskpart中看到的数字相同。

获取逻辑设备名称后,在 \GLOBAL?? 目录中查找该名称的别名。如果你找到一个别名,那么你就可以开始了。如果找不到别名,则需要使用可以访问 \Device 名称的 Win32 API。我认为至少有一个这样的API,因为我多年前编写了一个程序,将\Device names作为参数。