我想知道 Windows XP 引导加载程序 ( ntldr
) 是否真的使用了 Windows 内核 ( ntoskrnl.exe
) 导入声明?
ntoskrnl.exe
具有以下导入模块BOOTVID.dll
:HAL.dll
和KDCOM.dll
. 所以这三个模块是最先被加载的。想象一下内核有另一个模块被声明为导入的。这会导致ntldr
也加载它吗?还是ntldr
只知道它应该加载这四个模块而没有办法改变它?
我想知道 Windows XP 引导加载程序 ( ntldr
) 是否真的使用了 Windows 内核 ( ntoskrnl.exe
) 导入声明?
ntoskrnl.exe
具有以下导入模块BOOTVID.dll
:HAL.dll
和KDCOM.dll
. 所以这三个模块是最先被加载的。想象一下内核有另一个模块被声明为导入的。这会导致ntldr
也加载它吗?还是ntldr
只知道它应该加载这四个模块而没有办法改变它?
我建议在ntdev邮件列表中问这个问题。要得到回答,您最好解释为什么需要此信息以及您要做什么。我可以保证,在此列表中,您会找到能够回答此问题的人,但不能保证您会得到回答。他们对“黑客气味”有点敏感。
发生了,我自己找到了答案。并在ntdev邮件列表中确认。
ntldr
确实只加载了问题中提到的四个文件,并且不使用任何导入声明。
您实际上可以通过创建一个存根内核(从实际内核中导入一些内容)并使用以下boot.ini
选项(您将获得文件中已加载模块的列表)来检查这一点%SystemRoot%\ntbtlog.txt
:
/bootlog /kernel=stubkrnl.exe