CORREÇÃO: Exceções SEH são interceptadas pelo manipulador de exceção errado quando o tratamento de exceções assíncronas é habilitado do WEC 2013

IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.

Clique aqui para ver a versão em Inglês deste artigo: 3008664
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 por meio de manipulação de exceções assíncrono a "/ /EHa"opção de compilador. 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 sobre a substituição de atualização

Esta atualização não substitui outras atualizações.

Informações sobre o arquivo:

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 guiafuso horário no item Data e hora no painel de controle.
Arquivos incluídos neste pacote de atualização
Nome do ArquivoTamanho do arquivoDataHoraCaminho
Frame.cpp34,13313 de novembro de 201423:06Private\Winceos\Coreos\Core\Corelibc\Crtw32\Eh
Fullcrt.lib30,027,37809 de setembro de 201509:17Public\Common\Oak\Lib\X86\Checked
Fullcrt.lib30,228,29209 de setembro de 201509:17Public\Common\Oak\Lib\X86\Retail
Fullcrt.lib28,759,83609 de setembro de 201509:16Public\Common\Oak\Lib\X86\Debug
Fullcrt.lib29,278,30009 de setembro de 201509:17Public\Common\Oak\Lib\Armv7\Checked
Fullcrt.lib29,566,73009 de setembro de 201509:17Public\Common\Oak\Lib\Armv7\Retail
Fullcrt.lib33,139,56009 de setembro de 201509:16Public\Common\Oak\Lib\Armv7\Debug
Msvcr110d.dll1,339,95208 de setembro de 201505:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110.dll754,22408 de setembro de 201505:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110d.map1,287,57908 de setembro de 201505:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110d.rel528,83408 de setembro de 201505:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110.map788,98608 de setembro de 201505:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110.rel242,16908 de setembro de 201505:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110d.dll1,145,31208 de setembro de 201505:26Public\Common\Sdk\Crt\Bin\Arm
Msvcr110.dll539,60808 de setembro de 201505:26Public\Common\Sdk\Crt\Bin\Arm
Msvcr110d.map2,714,27508 de setembro de 201505:26Public\Common\Sdk\Crt\Bin\Arm
Msvcr110d.rel215,92408 de setembro de 201505:26Public\Common\Sdk\Crt\Bin\Arm
Msvcr110.map1,258,31708 de setembro de 201505:26Public\Common\Sdk\Crt\Bin\Arm
Msvcr110.rel122,16708 de setembro de 201505:26Public\Common\Sdk\Crt\Bin\Arm
Referências
Saiba mais sobre o terminologia que a Microsoft usa para descrever as atualizações de software.

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 3008664 - Última Revisão: 10/30/2015 00:19:00 - Revisão: 1.0

Windows Embedded Compact 2013

  • kbautohotfix kbqfe kbhotfixserver kbfix kbmt KB3008664 KbMtpt
Comentários