![](https://csdnimg.cn/release/download_crawler_static/86347339/bg4.jpg)
有效的 hiberfil.sys 文件,如果存在的话,这一次引导过程转移到休眠系统的恢复
过程。因此,os loader 将控制权交给一段能恢复休眠系统的内核代码。
如果当前这次引导不是休眠恢复,那么,os loader 解析 boot.ini 文件,如果
该文件中有多个引导选项,则 os loader 显示一个引导选择菜单;如果 boot.ini
文件中只包含一个引导选项,那么,此菜单不显示,而是立即应用该引导选项。
Windows 的引导选项可以用来指示当前这次引导的各种参数,包括内核模块
的文件名称、HAL 的文件名称、CPU 参数、各种内存参数、调试参数,等等。
关于这些引导选项的全面列表和介绍,读者可参考[MSDN-BOOT]。接下来 os
loader 加载并执行 NTDETECT.COM 程序,这是一个 16 位实模式程序,它利用系
统的 BIOS 来查询系统的基本设备和配置信息,包括系统的日期和时间、总线的
类型、磁盘的信息、输入/输出的接口信息等。这些信息被收集起来,在引导过
程的后期被存放到注册表 HKLM\HARDWARE\DESCRIPTION 键的下面。
然后,os loader 加载内核模块映像文件,默认为 ntoskrnl.exe,以及 HAL 映
像 文 件 , 默 认 为 hal.dll 。 再 加 载 注 册 表 的 SYSTEM 储 巢 , 即
\WINDOWS\system32\config\system文件。通过检查SYSTEM储巢中的设置信息,
它可以知道哪些设备驱动程序必须被加载进 来 , 即 被 标 记 为 “ 引 导 -启动”
(SERVICE_BOOT_START)的设备驱动程序。然后它加载所有这些被标记为“引
导-启动”的设备驱动程序,以及访问系统目录所必需的文件系统驱动程序。注意,
在此之前 os loader 也可以访问系统分区,但并非通过文件系统驱动程序。
至此,引导系统所需的模块(包括内核映像、HAL,以及必要的设备驱动程
序)都已经被加载到内存中。而且,在此过程中 os loader 也已经构造了一个参
数块,记录下了这次引导过程中加载器所获得的各种参数信息。参数块的类型为