Windows NT is designed around the concept that the first driver to claim a device obtains ownership of that device. This ownership can be shared or it can be exclusive; this is up to the claiming device driver. If the device is exclusively claimed by a device driver, any further attempts to claim the device by subsequently loaded device drivers fail. Because of this, it is imperative that the order in which device drivers load can be modified by device driver authors. This article describes the two methods that you can use to control the order in which device drivers load.
There are two methods that you can use to control the order in which device drivers load. Both methods take advantage of entries in the registry that can be found at \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control. The first method is to modify the ServiceGroupOrder. The second method is to assign Tag values that determine the order of driver loading according to the GroupOrderList. The tag values start type and Group names are in the HKLM\SYSTEM\CurrentControlSet\Services\ key which must be added before the values can be listed in the Group Order List.
These two methods only work for device drivers that have a start value of 0 (SERVICE_BOOT_START) or 1 (SERVICE_SYSTEM_START). In all cases, device drivers with a start value of 0 load before any device drivers with a start value of 1 attempt to load.