2016-01-30 52 views
2

我有一臺裝有GPT驅動器的Windows機器。
我有一個EFI系統分區的DOS設備名稱作爲bcdedit的輸出。
我想打開這個分區的句柄,並通過QueryDosDevice()獲得DOS名稱來與我已有的DOS名稱進行比較。
我試圖使用FindFirstVolume/FindNextVolume查找卷名以從QueryDosDevice獲取DOS名稱,但我沒有找到EFI系統分區的卷。 WMI也沒有該分區的卷。
如何獲取EFI系統分區的卷名?

如何從C++代碼中獲取EFI系統分區的卷名以便在QueryDosDevice中使用它?

回答

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,因爲我在很多年前編寫了一個程序,它以\ Device名稱作爲參數。