Windows Services Programming 3

 

 

 

 

 

Automatically Starting Services

 

During system boot, the SCM starts all auto-start services and the services on which they depend. For example, if an auto-start service depends on a demand-start service, the demand-start service is also started automatically. The load order is determined by the following:

 

  1. The order of groups in the load ordering group list. This information is stored in the ServiceGroupOrder value in the following registry key:

 

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control

 

The HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control registry key

 

To specify the load ordering group for a service, use the lpLoadOrderGroup parameter of the CreateService() or ChangeServiceConfig() function.

 

  1. The order of services within a group specified in the tags order vector. This information is stored in the GroupOrderList value in the following registry key:

 

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control

 

The HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control registry key

 

  1. The dependencies listed for each service.

 

When the boot is complete, the system executes the boot verification program specified by the BootVerificationProgram value of the following registry key:

 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control

 

The HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control registry key

 

By default, this value is not set. The system simply reports that the boot was successful after the first user has logged on. You can supply a boot verification program that checks the system for problems and reports the boot status to the SCM using the NotifyBootConfigStatus() function.

After a successful boot, the system saves a clone of the database in the last-known-good (LKG) configuration. The system can restore this copy of the database if changes made to the active database cause the system reboot to fail. The following is the registry key for this database:

 

HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX\Services

 

The HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX\Services registry key

 

Where XXX is the value saved in the following registry value:

 

HKEY_LOCAL_MACHINE\System\Select\LastKnownGood

 

The HKEY_LOCAL_MACHINE\System\Select\LastKnownGood registry key

 

If an auto-start service with a SERVICE_ERROR_CRITICAL error control level fails to start, the SCM reboots the computer using the LKG configuration. If the LKG configuration is already being used, the boot fails. An auto-start service can be configured as a delayed auto-start service by calling the ChangeServiceConfig2() function with SERVICE_CONFIG_DELAYED_AUTO_START_INFO. This change takes effect after the next system boot.

 

 

 

 

< Windows Services 2 | Win32 Programming | Windows Services Win32 Programming | Windows Services 4 >