CAUSE
There are two important contributors to this problem:
- Control Panel items are started by Ctlpnl.exe.
- Active Sync requires that all applications be closed during backup and restore.
First, the items in Control Panel are started by the Ctlpnl.exe executable. The process for loading the standard items (such as Network, Comm, Main, Password, Power, System, Screen, Sounds, Sipcpl and Clock) is to load the specified .cpl file if one is available. If the specified .cpl file is not available, Ctlpnl.exe uses the appropriate item that is included in the Cplmain.cpl file. This mechanism provides an easy way for an OEM to replace the default items: the OEM just writes new ones.
This mechanism is implemented in the Ctlpnl.cpp source file that is located in the following file:
\Wince300\Public\Wceshellfe\Oak\Ctlpnl\Ctlpnl\
Second, the Active Sync Backup and Restore features make sure that no data files are open in a Microsoft Windows CE-based device during a backup or restore operation. This functionality requires a mechanism to close any applications that are running. Closing these applications is done by means of the
KillAllApps function. Active Sync looks for this function in the Control Panel item, System.cpl. For this to work, you must have the simple source code file, System.cpl, that is included in the Data Synchronization Update for Windows CE Platform Builder 3.0. The OEM must implement the
KillAllApps function in the following file:
\Wince300\Public\Datasync\Oak\Ctlpanel\System\System.c
For more information and to obtain the data synchronization update, see the "References" section.
As a result of these two factors, the standard mechanism in Ctlpnl.exe no longer defaults to using the System Control Panel item in Cplmain.cpl. The Ctlpnl.exe process tries to load the new item in System.cpl that was provided by the data synchronization update. However, this attempt will be unsuccessful because this simple .cpl file has no Control Panel item.
Note You can still access the System item by means of Control Panel. This still works because Control Panel enumerates all items in all .cpl files. Therefore, Control Panel opens the item that is contained in Cplmain.cpl.