CORREÇÃO: um turno de uma hora pode ocorrer quando você usa as funções SetLocalTime ou SetSystemTime no Windows Embedded CE 6.0 R3

Sintomas

Considere o seguinte cenário:

  • Você tem um aplicativo que está em execução em um dispositivo baseado no Windows Embedded CE 6.0 R3.
  • O aplicativo chama a função SetLocalTime para atualizar a hora local do dispositivo.

Nesse cenário, você pode descobrir que a hora local do dispositivo muda em uma hora ocasionalmente após a função ser chamada.

Observação Você também pode ter esse mesmo problema ao usar a função SetSystemTime.

Causa

Esse problema ocorre porque as funções SetLocalTime e SetSystemTime não são thread-safe. As funções modificam uma variável global no kernel e essa variável não é protegida corretamente por um objeto de seção crítico.

Resolução

Informações de atualização do software

Uma atualização de software com suporte agora está disponível na Microsoft como Windows Embedded CE 6.0 Atualização mensal março de 2012. Na seção "Informações de arquivo", o nome do arquivo de pacote contém a versão do produto, a data, o número do artigo base de dados de conhecimento e o tipo de processador. O formato de nome do arquivo de pacote é o seguinte:

Tipo de processador de versão do produto yymmdd-kbnnnnnnPara exemplo, Wincepb60-110128-kb2492159-armv4i.msi é a correção armv4i Windows Embedded CE 6.0 Platform Builder documentada no artigo KB 2492159 e que está contida na atualização mensal de janeiro de 2011.

Para resolve esse problema imediatamente, baixe esta Atualização Mensal do Windows Embedded CE 6.0 do seguinte site da Microsoft.

Centro de Download da Microsoft

Windows Embedded CE 6.0

Pré-requisitos

Essa atualização será compatível apenas se todas as atualizações lançadas anteriormente para esse produto também tiverem sido instaladas.

Necessidade de reinicialização

Após aplicar esta atualização, você deverá executar uma compilação limpa de toda a plataforma. Para fazer isso, utilize um dos métodos seguintes:

  • No menu Compilar, clique em Limpar Solução e clique em Compilar Solução.
  • No menu Compilar, clique em Recompilar Solução.

Não é necessário reiniciar o computador após aplicar esta atualização de software.

Informações sobre substituição da atualização

Essa atualização não substitui nenhuma outra.

Informações de arquivo

A versão em inglês deste pacote de atualização de software tem os atributos de arquivo (ou atributos de arquivo mais recentes) listados na tabela a seguir. As datas e as horas desses arquivos estão listadas no formato UTC (Tempo Universal Coordenado). Quando você visualizar as informações sobre os arquivos, elas são convertidas no horário local. Para saber a diferença entre a hora UTC e a hora local, use a guia Fuso Horário no item Data e Hora do Painel de Controle.

Arquivos do instalador

Nome do arquivo Tamanho do arquivo Data Horário
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

Arquivos que são incluídos neste pacote de atualização

Nome do arquivo Tamanho do arquivo Data Horário Caminho
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 Público\Common\Oak\Lib\Mipsiv\Debug
Nkprmain.lib 2,657,080 08-Mar-2012 01:40 Público\Common\Oak\Lib\Mipsiv\Debug
Nkmain.lib 1,701,878 08-Mar-2012 01:40 Público\Common\Oak\Lib\Mipsiv\Retail
Nkprmain.lib 1,731,924 08-Mar-2012 01:40 Público\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

Referências

Para obter mais informações sobre a função SetLocalTime, visite o seguinte site da Microsoft Developer Network (MSDN):

SetLocalTime Para obter mais informações sobre a função SetSystemTime, visite o seguinte site da MSDN:

SetSystemTime Para obter mais informações sobre um objeto de secção crítico, visite o seguinte site da MSDN:

Objetos de Secção Críticos (Windows Embedded CE 6.0) Para obter mais informações sobre a terminologia da atualização de software, clique no seguinte número de artigo para ver o artigo na Base de Dados de Conhecimento Microsoft:

824684 Descrição da terminologia padrão usada para descrever as atualizações de software da Microsoft