ИСПРАВЛЕНИЕ. При использовании функций SetLocalTime или SetSystemTime в Windows Embedded CE 6.0 R3 может произойти смена времени на один час.

Проблема

Рассмотрим следующий сценарий.

  • У вас есть приложение, работающее на устройстве под управлением Windows Embedded CE 6.0 R3.
  • Приложение вызывает функцию SetLocalTime, чтобы обновить местное время для устройства.

В этом сценарии может оказаться, что местное время устройства иногда сдвигается на один час после вызова функции.

Примечание. Эта же проблема также может возникнуть при использовании функции SetSystemTime.

Причина

Эта проблема возникает из-за того, что функции SetLocalTime и SetSystemTime не являются потокобезопасны. Функции изменяют глобальную переменную в ядре, и эта переменная не защищена надлежащим образом объектом критического раздела.

Решение

Сведения об обновлении программного обеспечения

Поддерживаемое обновление программного обеспечения теперь доступно корпорацией Майкрософт в виде ежемесячного обновления Windows Embedded CE 6.0 за март 2012 г. В разделе "Сведения о файлах" имя файла пакета содержит версию продукта, дату, номер статьи базы знаний и тип процессора. Формат имени файла пакета выглядит следующим образом:

Версия продукта-ymmdd-kbnnnnnn-processor Type, Wincepb60-110128-kb2492159-armv4i.msi — это исправление ARMV4i Windows Embedded CE 6.0 Platform Builder, описанное в статье базы знаний 2492159 и содержащееся в ежемесячном обновлении за январь 2011 г.

Чтобы немедленно устранить эту проблему, скачайте ежемесячное обновление Windows Embedded CE 6.0 со следующего веб-сайта Майкрософт.

Центр загрузки Майкрософт

Windows Embedded CE 6.0

Необходимые условия

Это обновление поддерживается только в том случае, если также установлены все ранее выпущенные обновления для этого продукта.

Необходимость перезапуска

После применения этого обновления необходимо выполнить чистую сборку всей платформы. Для этого используйте один из следующих методов:

  • В меню Сборка выберите Пункт Чистое решение, а затем — Сборка решения.
  • В меню Сборка выберите перестроить решение.

После применения этого обновления не нужно перезагружать компьютер.

Сведения о замене обновления

Это обновление не заменяет никаких других обновлений.

Сведения о файлах

Английская версия этого пакета обновления программного обеспечения содержит атрибуты файлов (или более поздние), перечисленные в следующей таблице. Значения даты и времени для этих файлов указаны в формате UTC. При просмотре сведений о файлах они преобразуются в местное время. Чтобы найти разницу между временем в формате UTC и местным временем, используйте вкладку Часовой пояс в элементе Дата и время в панель управления.

Файлы установщика

Имя файла Размер файла Дата Время
Wincepb60-120319-kb2686451-mipsiv_fp.msi 3,493,888 20 марта 2012 г. 18:21
Wincepb60-120319-kb2686451-sh4.msi 3,149,824 20 марта 2012 г. 18:21
Wincepb60-120319-kb2686451-x86.msi 2,985,984 20 марта 2012 г. 18:21
Wincepb60-120319-kb2686451-armv4i.msi 3,493,888 20 марта 2012 г. 18:21
Wincepb60-120319-kb2686451-mipsii.msi 3,334,144 20 марта 2012 г. 18:21
Wincepb60-120319-kb2686451-mipsii_fp.msi 3,448,832 20 марта 2012 г. 18:21
Wincepb60-120319-kb2686451-mipsiv.msi 3,371,008 20 марта 2012 г. 18:21

Files, включенные в этот пакет обновления

Имя файла Размер файла Дата Время Путь
Time.c 23,298 08 марта 2012 г. 01:42 Private\Winceos\Coreos\Nk\Kernel
Nkmain.lib 2,746,064 08 марта 2012 г. 01:39 Public\Common\Oak\Lib\Armv4i\Debug
Nkprmain.lib 2,782,924 08 марта 2012 г. 01:39 Public\Common\Oak\Lib\Armv4i\Debug
Nkmain.lib 1,767,370 08 марта 2012 г. 01:39 Public\Common\Oak\Lib\Armv4i\Retail
Nkprmain.lib 1,792,798 08 марта 2012 г. 01:39 Public\Common\Oak\Lib\Armv4i\Retail
Nkmain.lib 2,588,508 08 марта 2012 г. 01:39 Public\Common\Oak\Lib\Mipsii\Debug
Nkprmain.lib 2,624,494 08 марта 2012 г. 01:39 Public\Common\Oak\Lib\Mipsii\Debug
Nkmain.lib 1,676,650 08 марта 2012 г. 01:39 Public\Common\Oak\Lib\Mipsii\Retail
Nkprmain.lib 1,706,794 08 марта 2012 г. 01:39 Public\Common\Oak\Lib\Mipsii\Retail
Nkmain.lib 2,663,356 08 марта 2012 г. 01:40 Public\Common\Oak\Lib\Mipsii_fp\Debug
Nkprmain.lib 2,699,618 08 марта 2012 г. 01:40 Public\Common\Oak\Lib\Mipsii_fp\Debug
Nkmain.lib 1,736,352 08 марта 2012 г. 01:40 Public\Common\Oak\Lib\Mipsii_fp\Retail
Nkprmain.lib 1,766,604 08 марта 2012 г. 01:40 Public\Common\Oak\Lib\Mipsii_fp\Retail
Nkmain.lib 2,620,962 08 марта 2012 г. 01:40 Public\Common\Oak\Lib\Mipsiv\Debug
Nkprmain.lib 2,657,080 08 марта 2012 г. 01:40 Public\Common\Oak\Lib\Mipsiv\Debug
Nkmain.lib 1,701,878 08 марта 2012 г. 01:40 Public\Common\Oak\Lib\Mipsiv\Retail
Nkprmain.lib 1,731,924 08 марта 2012 г. 01:40 Public\Common\Oak\Lib\Mipsiv\Retail
Nkmain.lib 2,701,072 08 марта 2012 г. 01:41 Public\Common\Oak\Lib\Mipsiv_fp\Debug
Nkprmain.lib 2,737,466 08 марта 2012 г. 01:41 Public\Common\Oak\Lib\Mipsiv_fp\Debug
Nkmain.lib 1,768,040 08 марта 2012 г. 01:41 Public\Common\Oak\Lib\Mipsiv_fp\Retail
Nkprmain.lib 1,798,190 08 марта 2012 г. 01:41 Public\Common\Oak\Lib\Mipsiv_fp\Retail
Nkmain.lib 2,183,008 08 марта 2012 г. 01:41 Public\Common\Oak\Lib\Sh4\Debug
Nkprmain.lib 2,208,240 08 марта 2012 г. 01:41 Public\Common\Oak\Lib\Sh4\Debug
Nkmain.lib 1,520,142 08 марта 2012 г. 01:41 Public\Common\Oak\Lib\Sh4\Retail
Nkprmain.lib 1,544,514 08 марта 2012 г. 01:41 Public\Common\Oak\Lib\Sh4\Retail
Nkmain.lib 2,174,422 08 марта 2012 г. 01:38 Public\Common\Oak\Lib\X86\Debug
Nkprmain.lib 2,202,554 08 марта 2012 г. 01:38 Public\Common\Oak\Lib\X86\Debug
Nkmain.lib 1,532,248 08 марта 2012 г. 01:38 Public\Common\Oak\Lib\X86\Retail
Nkprmain.lib 1,552,260 08 марта 2012 г. 01:38 Public\Common\Oak\Lib\X86\Retail

Ссылки

Дополнительные сведения о функции SetLocalTime см. на следующем веб-сайте Microsoft Developer Network (MSDN):

SetLocalTime Дополнительные сведения о функции SetSystemTime см. на следующем веб-сайте MSDN:

SetSystemTime Дополнительные сведения об объекте критического раздела см. на следующем веб-сайте MSDN:

Объекты критических разделов (Windows Embedded CE 6.0) Чтобы получить дополнительные сведения о терминологии обновлений программного обеспечения, щелкните следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт:

824684 Описание стандартной терминологии, используемой для описания обновлений программного обеспечения Майкрософт