Este artigo descreve um problema no qual SEH exceções são detectadas por um manipulador no Windows Embedded Compact 2013 errado. Uma atualização está disponível para corrigir esse problema. Antes de instalar essa atualização, todas as atualizações emitidas anteriormente para este produto devem ser instaladas.
Sintomas
Considere o seguinte cenário:
-
Você pode usar o plug-in para Visual Studio 2013 Application Builder para criar um aplicativo C++ voltado para o Windows Embedded Compact 2013.
-
Habilitar o usando a opção de compilador "/EHa" de manipulação de exceções assíncrono. Essa opção permite que os dois C++ síncrona estruturados tratamento de exceção e métodos sejam combinados no mesmo código de manipulação de exceções assíncronas de (SEH).
-
Execute o código relacionado para capturar exceções SEH.
Nesse cenário, exceções SEH sempre são detectadas no manipulador de exceção de primeira mesmo que é filtrado para uma exceção de C++ síncrona.
O comportamento esperado é exceções SEH sendo interceptadas pelo manipulador de exceção de reticências. Por exemplo, você pode executar o exemplo de código a seguir:class CMyEx{ public: CMyEx(int nParam) : m_nParam(nParam) { } int m_nParam; }; void TestExceptions() { try { int a = 42; int b = 0; // throw CMyEx(1); // throw 97; int c = a / b; } catch (const CMyEx &e) { wprintf(L"CMyEx exception caught (param=%d)!\n", e.m_nParam); } catch (...) { wprintf(L"Exception of unspecified type caught by ellipsis clause!\n"); } } Neste exemplo, você sempre acertar a primeira cláusula catch quando ocorre a exceção SEH (divisão de número inteiro por zero) no lugar do manipulador de reticências conforme o esperado.Resolução
Informações de atualização de software
Windows Embedded Compact 2013 atualização mensal (setembro de 2015) foi disponibilizada pela Microsoft. Para baixar essa atualização mensal do Windows Embedded Compact 2013, vá para Microsoft OEM Online ou MyOEM.
Pré-requisitos:
Esta atualização é compatível somente se todas as atualizações emitidas anteriormente para esse produto também foram instaladas.
Requisitos de reinicialização:
Depois de aplicar essa atualização, você deve executar uma compilação limpa de toda a plataforma. Para fazer isso, use um dos seguintes métodos:
-
No menu Build , selecione Limpar soluçãoe, em seguida, selecione Build Solution.
-
No menu Build , selecione Reconstruir solução.
Você não precisa reiniciar o computador após aplicar essa atualização de software.
Informações de substituição da atualização
Esta atualização não substitui outras atualizações.
A versão em inglês deste pacote de atualização de software tem os atributos de arquivo (ou atributos de arquivo posteriores) listados na tabela a seguir. As datas e horas desses arquivos estão listadas na Hora Universal Coordenada (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para localizar a diferença entre o UTC e a hora local, use a guia fuso horário no item Data e hora no painel de controle.
Arquivos incluídos neste pacote de atualização
Nome do Arquivo |
Tamanho do arquivo |
Data |
Hora |
Caminho |
---|---|---|---|---|
Frame.cpp |
34,133 |
13-Nov-2014 |
23:06 |
Private\Winceos\Coreos\Core\Corelibc\Crtw32\Eh |
Fullcrt.lib |
30,027,378 |
09-Sep-2015 |
09:17 |
Public\Common\Oak\Lib\X86\Checked |
Fullcrt.lib |
30,228,292 |
09-Sep-2015 |
09:17 |
Public\Common\Oak\Lib\X86\Retail |
Fullcrt.lib |
28,759,836 |
09-Sep-2015 |
09:16 |
Public\Common\Oak\Lib\X86\Debug |
Fullcrt.lib |
29,278,300 |
09-Sep-2015 |
09:17 |
Public\Common\Oak\Lib\Armv7\Checked |
Fullcrt.lib |
29,566,730 |
09-Sep-2015 |
09:17 |
Public\Common\Oak\Lib\Armv7\Retail |
Fullcrt.lib |
33,139,560 |
09-Sep-2015 |
09:16 |
Public\Common\Oak\Lib\Armv7\Debug |
Msvcr110d.dll |
1,339,952 |
08-Sep-2015 |
05:26 |
Public\Common\Sdk\Crt\Bin\X86 |
Msvcr110.dll |
754,224 |
08-Sep-2015 |
05:26 |
Public\Common\Sdk\Crt\Bin\X86 |
Msvcr110d.map |
1,287,579 |
08-Sep-2015 |
05:26 |
Public\Common\Sdk\Crt\Bin\X86 |
Msvcr110d.rel |
528,834 |
08-Sep-2015 |
05:26 |
Public\Common\Sdk\Crt\Bin\X86 |
Msvcr110.map |
788,986 |
08-Sep-2015 |
05:26 |
Public\Common\Sdk\Crt\Bin\X86 |
Msvcr110.rel |
242,169 |
08-Sep-2015 |
05:26 |
Public\Common\Sdk\Crt\Bin\X86 |
Msvcr110d.dll |
1,145,312 |
08-Sep-2015 |
05:26 |
Public\Common\Sdk\Crt\Bin\Arm |
Msvcr110.dll |
539,608 |
08-Sep-2015 |
05:26 |
Public\Common\Sdk\Crt\Bin\Arm |
Msvcr110d.map |
2,714,275 |
08-Sep-2015 |
05:26 |
Public\Common\Sdk\Crt\Bin\Arm |
Msvcr110d.rel |
215,924 |
08-Sep-2015 |
05:26 |
Public\Common\Sdk\Crt\Bin\Arm |
Msvcr110.map |
1,258,317 |
08-Sep-2015 |
05:26 |
Public\Common\Sdk\Crt\Bin\Arm |
Msvcr110.rel |
122,167 |
08-Sep-2015 |
05:26 |
Public\Common\Sdk\Crt\Bin\Arm |
Referências
Saiba mais sobre a terminologia usada pela Microsoft para descrever as atualizações de software.