我有一台带GPT驱动器的Windows机器。
我有一个DOS设备名称EFI系统分区作为bcdedit的输出。
我想打开这个分区的句柄,并通过QueryDosDevice()获取DOS名称,以便与我已经拥有的DOS名称进行比较。
我尝试使用FindFirstVolume / FindNextVolume来查找卷名以从QueryDosDevice获取DOS名称,但我没有找到EFI系统分区的卷。 WMI也没有该分区的音量。
如何从C ++代码获取EFI系统分区的卷名,以便在QueryDosDevice中使用它?
答案 0 :(得分:0)
试试这个。下载并安装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,因为我多年前编写了一个以“设备名称为参数”的程序。