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
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