如何获得EFI系统分区的卷名?

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

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

Solutions Collecting From Web of "如何获得EFI系统分区的卷名?"

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

一旦你得到逻辑设备名称在\ GLOBAL? 目录为该名称的别名。 如果你找到一个别名,那么你很好走。 如果您没有找到别名,那么您将需要使用可以访问\ Device名称的Win32 API。 我认为至少有一个这样的API,因为我写了一个多年前的程序,以\ Device名称作为参数。