Проблема
Рассмотрим следующий сценарий.
- У вас есть приложение, работающее на устройстве под управлением 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 со следующего веб-сайта Майкрософт.
Центр загрузки Майкрософт
Необходимые условия
Это обновление поддерживается только в том случае, если также установлены все ранее выпущенные обновления для этого продукта.
Необходимость перезапуска
После применения этого обновления необходимо выполнить чистую сборку всей платформы. Для этого используйте один из следующих методов:
- В меню Сборка выберите Пункт Чистое решение, а затем — Сборка решения.
- В меню Сборка выберите перестроить решение.
После применения этого обновления не нужно перезагружать компьютер.
Сведения о замене обновления
Это обновление не заменяет никаких других обновлений.
Сведения о файлах
Английская версия этого пакета обновления программного обеспечения содержит атрибуты файлов (или более поздние), перечисленные в следующей таблице. Значения даты и времени для этих файлов указаны в формате 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 Описание стандартной терминологии, используемой для описания обновлений программного обеспечения Майкрософт