FIX: A one-hour time shift may occur when you use the SetLocalTime or SetSystemTime functions in Windows Embedded CE 6.0 R3

Symptoms

Consider the following scenario:

  • You have an application that is running on a Windows Embedded CE 6.0 R3-based device.
  • The application calls the SetLocalTime function to update the local time for the device.

In this scenario, you may find that the local time of the device shifts by one hour occasionally after the function is called.

Note You may also experience this same issue when you use the SetSystemTime function.

Cause

This problem occurs because the SetLocalTime and SetSystemTime functions are not thread-safe. The functions modify a global variable in the kernel, and this variable is not protected correctly by a critical section object.

Resolution

Software update information

A supported software update is now available from Microsoft as Windows Embedded CE 6.0 Monthly Update March 2012. In the "File information" section, the package file name contains the product version, the date, the Knowledge Base article number, and the processor type. The package file name format is as follows:

Product version-yymmdd-kbnnnnnn-processor typeFor example, Wincepb60-110128-kb2492159-armv4i.msi is the ARMV4i Windows Embedded CE 6.0 Platform Builder fix that is documented in KB article 2492159 and that is contained in the January 2011 monthly update.

To resolve this problem immediately, download this Windows Embedded CE 6.0 Monthly Update from the following Microsoft website.

Microsoft Download Center

Windows Embedded CE 6.0

Prerequisites

This update is supported only if all previously issued updates for this product have also been installed.

Restart requirement

After you apply this update, you must perform a clean build of the whole platform. To do this, use one of the following methods:

  • On the Build menu, click Clean Solution, and then click Build Solution.
  • On the Build menu, click Rebuild Solution.

You do not have to restart the computer after you apply this software update.

Update replacement information

This update does not replace any other updates.

File information

The English version of this software update package has the file attributes (or later file attributes) that are listed in the following table. The dates and times for these files are listed in Coordinated Universal Time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time item in Control Panel.

Installer files

File name File size Date Time
Wincepb60-120319-kb2686451-mipsiv_fp.msi 3,493,888 20-Mar-2012 18:21
Wincepb60-120319-kb2686451-sh4.msi 3,149,824 20-Mar-2012 18:21
Wincepb60-120319-kb2686451-x86.msi 2,985,984 20-Mar-2012 18:21
Wincepb60-120319-kb2686451-armv4i.msi 3,493,888 20-Mar-2012 18:21
Wincepb60-120319-kb2686451-mipsii.msi 3,334,144 20-Mar-2012 18:21
Wincepb60-120319-kb2686451-mipsii_fp.msi 3,448,832 20-Mar-2012 18:21
Wincepb60-120319-kb2686451-mipsiv.msi 3,371,008 20-Mar-2012 18:21

Files that are included in this update package

File name File size Date Time Path
Time.c 23,298 08-Mar-2012 01:42 Private\Winceos\Coreos\Nk\Kernel
Nkmain.lib 2,746,064 08-Mar-2012 01:39 Public\Common\Oak\Lib\Armv4i\Debug
Nkprmain.lib 2,782,924 08-Mar-2012 01:39 Public\Common\Oak\Lib\Armv4i\Debug
Nkmain.lib 1,767,370 08-Mar-2012 01:39 Public\Common\Oak\Lib\Armv4i\Retail
Nkprmain.lib 1,792,798 08-Mar-2012 01:39 Public\Common\Oak\Lib\Armv4i\Retail
Nkmain.lib 2,588,508 08-Mar-2012 01:39 Public\Common\Oak\Lib\Mipsii\Debug
Nkprmain.lib 2,624,494 08-Mar-2012 01:39 Public\Common\Oak\Lib\Mipsii\Debug
Nkmain.lib 1,676,650 08-Mar-2012 01:39 Public\Common\Oak\Lib\Mipsii\Retail
Nkprmain.lib 1,706,794 08-Mar-2012 01:39 Public\Common\Oak\Lib\Mipsii\Retail
Nkmain.lib 2,663,356 08-Mar-2012 01:40 Public\Common\Oak\Lib\Mipsii_fp\Debug
Nkprmain.lib 2,699,618 08-Mar-2012 01:40 Public\Common\Oak\Lib\Mipsii_fp\Debug
Nkmain.lib 1,736,352 08-Mar-2012 01:40 Public\Common\Oak\Lib\Mipsii_fp\Retail
Nkprmain.lib 1,766,604 08-Mar-2012 01:40 Public\Common\Oak\Lib\Mipsii_fp\Retail
Nkmain.lib 2,620,962 08-Mar-2012 01:40 Public\Common\Oak\Lib\Mipsiv\Debug
Nkprmain.lib 2,657,080 08-Mar-2012 01:40 Public\Common\Oak\Lib\Mipsiv\Debug
Nkmain.lib 1,701,878 08-Mar-2012 01:40 Public\Common\Oak\Lib\Mipsiv\Retail
Nkprmain.lib 1,731,924 08-Mar-2012 01:40 Public\Common\Oak\Lib\Mipsiv\Retail
Nkmain.lib 2,701,072 08-Mar-2012 01:41 Public\Common\Oak\Lib\Mipsiv_fp\Debug
Nkprmain.lib 2,737,466 08-Mar-2012 01:41 Public\Common\Oak\Lib\Mipsiv_fp\Debug
Nkmain.lib 1,768,040 08-Mar-2012 01:41 Public\Common\Oak\Lib\Mipsiv_fp\Retail
Nkprmain.lib 1,798,190 08-Mar-2012 01:41 Public\Common\Oak\Lib\Mipsiv_fp\Retail
Nkmain.lib 2,183,008 08-Mar-2012 01:41 Public\Common\Oak\Lib\Sh4\Debug
Nkprmain.lib 2,208,240 08-Mar-2012 01:41 Public\Common\Oak\Lib\Sh4\Debug
Nkmain.lib 1,520,142 08-Mar-2012 01:41 Public\Common\Oak\Lib\Sh4\Retail
Nkprmain.lib 1,544,514 08-Mar-2012 01:41 Public\Common\Oak\Lib\Sh4\Retail
Nkmain.lib 2,174,422 08-Mar-2012 01:38 Public\Common\Oak\Lib\X86\Debug
Nkprmain.lib 2,202,554 08-Mar-2012 01:38 Public\Common\Oak\Lib\X86\Debug
Nkmain.lib 1,532,248 08-Mar-2012 01:38 Public\Common\Oak\Lib\X86\Retail
Nkprmain.lib 1,552,260 08-Mar-2012 01:38 Public\Common\Oak\Lib\X86\Retail

References

For more information about the SetLocalTime function, visit the following Microsoft Developer Network (MSDN) website:

SetLocalTime For more information about the SetSystemTime function, visit the following MSDN website:

SetSystemTime For more information about a critical section object, visit the following MSDN website:

Critical Section Objects (Windows Embedded CE 6.0) For more information about software update terminology, click the following article number to view the article in the Microsoft Knowledge Base:

824684 Description of the standard terminology that is used to describe Microsoft software updates