Windows为了解决硬件兼容性,会使用C:/WINDOWS/inf/biosinfo.inf。
该文件在必要的时候由ntldr加载,ntoskrnl执行。如果在需要的时候加载该文件失败的话会无法启动的。
该文件中最重要的一个节[MachineDescription]。
该节下列出了有多少种主板需要识别,我们拿其中一项来说明
AMIBios1
该项对应了一个同名的节
[AMIBios1]
memory=f000,8100,S,"AMIBIOS"
memory=f000,813A,S,"07/08/94"
install=Disable_APM_Install
ntoskrnl会根据节下面的数据来操作。
比如第一行的意思就是F000:8100为"AMIBIOS"的字符串,
第二行表示在F000:813A位置应该是"07/08/94"的字符串
第三行表示要执行的操作
[Disable_APM_Install]
AddReg=DisableApmAddReg
[DisableApmAddReg]
HKLM,System/CurrentControlSet/Control/Biosinfo/APM,Attributes,0x00010001,00000002
意思就是要在对应的注册表下面建个键值。
ntoskrnl解析该文件的时候会对每种主板进行识别一次,以便去修正主板的一些BUG。
该文件在同一台机器上只会执行一次,执行后会将BIOS特征写入注册表,下次ntldr检测到该标志后就不会再载入该文件了。