//判斷流程可以這樣:
//1, 支援efi引導的//只有win7及以上, 所以xp, 03系統就只能夠bios引導
//2, win7,8,8.1,10等系統, 可以用下面的**, 本質上就是getfirmwareenvironmentvariablea, 或者getfirmwaretype這兩個api的呼叫
#include #include //getfirmwareenvironmentvariablea 和 getfirmwaretype的標頭檔案
#include using namespace std;
void main()
firmware_type, *pfirmware_type;
*/ firmware_type a;
getfirmwaretype(&a);
switch (a)
//windows 7/server 2008r2 and above可用
getfirmwareenvironmentvariablea("", "", null, 0);
if (getlasterror() == error_invalid_function)
//api not supported; this is a legacy bios
cout << "bios引導" << endl;
else
//api error (expected) but call is supported.this is uefi.
cout << "uefi引導" << endl;
system("pause");
}下面貼上找到的最好的微軟資料(三個辦法判斷bios和efi引導)
指令碼 determine uefi or legacy bios from powershell (three methods)
uefi和bios啟動模式對比
uefi boot: how does that actually work, then?
bios mode - see if windows boot in uefi or legacy mode
什麼是引導引導程式?
引導引導程式 boot loader 會引導作業系統。當機器引導它的作業系統時,bios 會讀取引導介質上最前面的 512 位元組 即人們所知的 主引導記錄 master boot record,mbr 在單一的 mbr 中只能儲存乙個作業系統的引導記錄,所以當需要多個作業系統時就會出現問題。所以需...
BIOS的啟動原理學習 載入引導程式
在windows系統以及有圖形介面的其他作業系統中要想執行乙個程式,必須在視窗中雙擊它,或者在命令列介面中輸入相應的執行命令。從計算機底層機制上講,這其實是在乙個已經執行起來的作業系統的視覺化介面或命令列介面中執行乙個程式。感覺要進入先有雞還是先有蛋的迴圈之中了。但是,在開機加電的一瞬間,記憶體中什...
作業系統如何引導程式
1.使用者編寫完 後,通過編譯器將編譯為資料段 段 堆疊段 bss段,由鏈結器鏈結為裝入模組 2.使用者通知作業系統要執行的程式 3.作業系統根據路徑找到對應的程式,檢測程式的頭部,找到 段和資料段的位置 4.檔案系統根據這些段的位置找到對應的磁碟塊 5.作業系統建立程序 建立執行環境 並將要執行的...