Este artigo descreve um problema em que SEH excepções são capturadas por um processador de 2013 do Windows Embedded Compact errado. Existe uma actualização corrigir este problema. Antes de instalar esta actualização, tem de ser instaladas todas as actualizações anteriormente disponibilizadas para este produto.
Sintomas
Considere o seguinte cenário:
-
Utilize o construtor de aplicação Plug-in para 2013 do Visual Studio para criar uma aplicação de C++ direccionada 2013 do Windows Embedded Compact.
-
Activar o processamento, utilizando o parâmetro de compilador "/EHa" de excepções assíncrona. Este parâmetro permite que ambos os C++ síncronas e estruturados de processamento de excepções métodos destinados a serem misturados no mesmo código de processamento de excepções assíncrona (SEH).
-
Executa o código para interceptar as excepções de substituições SEH relacionado.
Neste cenário, excepções de substituições SEH sempre são capturadas no processador de excepções do primeiro mesmo que ela é filtrada para uma excepção síncrona C++.
O comportamento esperado é excepções de substituições SEH serem abrangidas pelo processador de excepções de reticências. Por exemplo, execute o seguinte código exemplo: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, sempre acerta a cláusula catch primeira quando ocorre a excepção de substituições SEH (número inteiro dividir por zero) em vez do processador de reticências conforme esperado.Resolução
Informações de actualização de software
Incorporado Compact 2013 actualização mensal do Windows (de Setembro de 2015) está agora disponível da Microsoft. Para transferir esta actualização mensal do Windows incorporado de 2013 Compact, vá para o Microsoft OEM Online ou MyOEM.
Pré-requisitos
Esta actualização só é suportada se todas as actualizações anteriormente disponibilizadas para este produto também tiverem sido instaladas.
Requisito de reinício
Depois de aplicar esta actualização, deve efectuar uma limpeza de toda a plataforma. Para tal, utilize um dos seguintes métodos:
-
No Build menu, seleccione Solução limpoe, em seguida, seleccione Build Solution.
-
No Build menu, seleccione Recriar a solução.
Não tem de reiniciar o computador depois de aplicar esta actualização de software.
Atualizar informações de substituição
Esta actualização não substitui quaisquer outras actualizações.
A versão inglesa deste pacote de actualização de software tem os atributos de ficheiro (ou atributos de ficheiro posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são listadas na hora Universal Coordenada (UTC). Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador Fuso horário no item data e hora no painel de controlo.
Ficheiros que estão incluídos neste pacote de actualização
Nome do ficheiro |
Tamanho do ficheiro |
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
Obter informações sobre a terminologia utilizada pela Microsoft para descrever actualizações de software.