I den här artikeln beskrivs ett problem där SEH-undantag fångas av fel hanterare i Windows Embedded Compact 2013. Det finns en uppdatering för att åtgärda problemet. Innan du installerar den här uppdateringen måste alla tidigare uppdateringar för den här produkten installeras.
Symptom
Tänk dig följande scenario:
- Du använder plugin-programmet Application Builder för Visual Studio 2013 för att skapa ett C++-program som riktar sig till Windows Embedded Compact 2013.
- Du aktiverar asynkron undantagshantering med hjälp av kompileraren "/EHa". Med den här växeln kan både C++-synkron och strukturerad undantagshantering (SEH) blandas asynkrona undantagshanteringsmetoder i samma kod.
- Du kör den relaterade koden för att fånga upp SEH-undantag.
I det här scenariot fastnar SEH-undantag alltid i den allra första undantagshanteraren även om det filtreras för ett synkront C++-undantag.
Det förväntade beteendet är SEH-undantag som fångas av ellips undantagshanteraren.
Du kan till exempel köra följande exempelkod:klass CMyEx
{
Offentliga:
CMyEx(int nParam) : m_nParam(nParam) { }
int m_nParam;
};
void TestExceptions()
{
Prova
{
int a = 42;
int b = 0;
kasta CMyEx(1);
kasta 97;
int c = a / b;
}
catch (const CMyEx &e)
{
wprintf(L"CMyEx exception caught (param=%d)!\n", e.m_nParam);
}
fånga (...)
{
wprintf(L"Exception of unspecified type caught by ellipsis clause!\n");
}
} I det här exemplet träffar du alltid den första catch-satsen när SEH-undantaget (heltalsdelning med noll) förekommer i stället för ellipshanteraren som förväntat.
Lösning
Information om programvaruuppdateringar
Månadsuppdateringen för Windows Embedded Compact 2013 (september 2015) är nu tillgänglig från Microsoft. Om du vill ladda ned den här månatliga uppdateringen för Windows Embedded Compact 2013 går du till Microsoft OEM Online eller MyOEM.
Krav
Den här uppdateringen stöds endast om alla tidigare uppdateringar för den här produkten också har installerats.
Krav på omstart
När du har installerat den här uppdateringen måste du göra en ren version av hela plattformen. Det gör du på något av följande sätt:
- På menyn Skapa väljer du Rensa lösning och sedan Skapa lösning.
- På menyn Skapa väljer du Återskapa lösning.
Du behöver inte starta om datorn när du har installerat den här programuppdateringen.
Ersättningsinformation om uppdateringen
Den här uppdateringen ersätter inga andra uppdateringar.
Filinformation
Den engelska versionen av det här programuppdateringspaketet har filattributen (eller senare filattribut) som visas i följande tabell. Datumen och tiderna för dessa filer anges i Coordinated Universal Time (UTC). När du visar filinformationen konverteras den till lokal tid. Om du vill se skillnaden mellan UTC och lokal tid använder du fliken Tidszon i objektet Datum och tid i Kontrollpanelen.
Files som ingår i det här uppdateringspaketet
| Filnamn | Filstorlek | Datum | Tid | Sökväg |
|---|---|---|---|---|
| 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 |
Referenser
Läs om den terminologi som Microsoft använder för att beskriva programuppdateringar.