设备驱动程序的加载过程如下图所示

1. 当在OAL中的OEMInit运行时,需要启动以太网调试、串口调试等调试服务;

2. OAL可能需要配置和列举一个总线,如PCI总线,以便操作一个用于调试的设备;

3. OAL负责将这个资源信息放到一个注册表键,并使驱动程序可访问它。然后,Device.exe被加载和启动,它加载资源管理器以从注册表读取一个可用的资源列表。

4. Device.exe[HKEY_LOCAL_MACHINE\Drivers\RootKey]加载注册表枚举器,注册表枚举器开始扫描注册表过程,以获得由RootKey下的子键加载的更多总线和设备。注册表枚举器被用于替代一个ISA总线驱动。所有ISA资源都必须通过注册表来分配,RegEnum.dll(BusEnum.dll)也能被列举ISA设备的注册表。

5. Drivers的一个子键可以是PCI,通常,在PCI键下列出的DLLPCI总线驱动PCIBUS.dll,它由注册表枚举器加载。PCI总线驱动的注册表入口是包括PCI总线可用的资源。通常设置[HKEY_LOCAL_MACHINE\Drivers\RootKey\Order]是为了在最后加载PCI总线驱动。这是为了在配置灵活的PCI设备资源之前先分配固定的资源,PCI设备驱动程序的注册表入口列在PCI键之下,它代表驻留在PCI总线上的设备。