Files with names in all upper case letters under \Windows become inaccessible

Article ID: 12265065

Symptom

Certain BSP versions of devices MC55, MC75 and Aspen have the issue of not being able to open the files with names in all capitals such as MFC80U.DLL or ABC.TXT when placed under \Windows and the device is cold/warm booted. MFC applications cannot be executed on the device after a cold/warm boot. The MFC application upon execution says unable to load the required components or the application is not signed.

Facts

ALL the MC55, MC75 and ASPEN devices.

Root Cause

The root cause of the problem is that Device based File system is mounted in the 0th boot phase. The locale that will initialize the code page that will be required by OEMToUniName API (used in file system) is initialized later with the call of InitLocale (API also used in File System). In order to get the code page available for File system, the mounting of device file system needs to be delayed so that Locale is initialized first then the file system mounting happens.

Resolution

The easiest workaround is to ensure that all the files in the \Windows folder are using lower case letters e.g. rename ABC.TXT to abc.txt. Unfortunately, this cannot be done automatically after a reboot as the files become inaccessible after a reboot.
The problem is seen on the devices with the BSPs mentioned in the table below. The best solution is to take up the next BSP for these devices as and when they are available.

User-added image

For the MFC application problem, there are a number of workarounds:
  1. Ensure that the MFC DLLs present in the \Windows folder are all in small case letters, for example, MFC80U.DLL is named as mfc80u.dll.
  2. Place the MFC DLLs in the same folder as the application itself
  3. Use HKLM\Loader to specify the additional path for SystemPath key where the MFC DLLs would be placed.
HKEY_LOCAL_MACHINE\Loader
SystemPath=multi_sz:\\path1\\

\\path2\\
  1. Statically build in the MFC routines in the application itself.
a. Open the project.
b. Right-click the node in the tree to open the Properties dialog for the project.
c. Under Configuration Properties, click the General node.
d. Within the Project Defaults table, set "Use of MFC" field to "Use MFC in a Static Library".
e. Build the project.