In dit artikel wordt een probleem beschreven waarbij SEH-uitzonderingen worden opgevangen door een verkeerde handler in Windows Embedded Compact 2013. Er is een update beschikbaar om dit probleem op te lossen. Voordat u deze update installeert, moeten alle eerder uitgegeven updates voor dit product zijn geïnstalleerd.
Symptomen
Neem als voorbeeld het volgende scenario:
- U gebruikt de invoegtoepassing Application Builder voor Visual Studio 2013 om een C++-toepassing te maken die is gericht op Windows Embedded Compact 2013.
- U schakelt de asynchrone uitzonderingsafhandeling in met behulp van de compilerswitch /EHa. Met deze switch kunnen zowel synchrone als SEH-asynchrone uitzonderingsafhandelingsmethoden (SEH) zowel synchrone als gestructureerde uitzonderingsafhandelingsmethoden (SEH) in dezelfde code worden gemengd.
- U voert de gerelateerde code uit om SEH-uitzonderingen op te vangen.
In dit scenario worden SEH-uitzonderingen altijd opgevangen in de allereerste uitzonderingshandler, zelfs als deze is gefilterd op een synchrone C++-uitzondering.
Het verwachte gedrag is dat SEH-uitzonderingen worden opgevangen door de ellipsuitzonderingshandler.
U voert bijvoorbeeld de volgende voorbeeldcode uit:klasse CMyEx
{
Openbare:
CMyEx(int nParam) : m_nParam(nParam) { }
int m_nParam;
};
void TestExceptions()
{
niet
{
int a = 42;
int b = 0;
throw CMyEx(1);
gooi 97;
int c = a / b;
}
catch (const CMyEx &e)
{
wprintf(L"CMyEx-uitzondering gevangen (param=%d)!\n", e.m_nParam);
}
catch (...)
{
wprintf(L"Uitzondering van niet-gespecificeerd type dat door het beletselteken wordt gevangen!\n");
}
} In dit voorbeeld bereikt u altijd de eerste catch-component wanneer de SEH-uitzondering (geheel getal delen door nul) optreedt in plaats van de beletseltekenhandler zoals verwacht.
Oplossing
Informatie over software-updates
De maandelijkse update voor Windows Embedded Compact 2013 (september 2015) is nu beschikbaar bij Microsoft. Als u deze maandelijkse update voor Windows Embedded Compact 2013 wilt downloaden, gaat u naar Microsoft OEM Online of MyOEM.
Vereisten
Deze update wordt alleen ondersteund als alle eerder uitgegeven updates voor dit product ook zijn geïnstalleerd.
Vereisten voor opnieuw starten
Nadat u deze update hebt toegepast, moet u een schone build van het hele platform uitvoeren. Gebruik hiervoor een van de volgende methoden:
- Selecteer in het menu Bouwende optie Schone oplossing en selecteer vervolgens Oplossing bouwen.
- Selecteer in het menu Bouwende optie Oplossing opnieuw opbouwen.
U hoeft de computer niet opnieuw op te starten nadat u deze software-update hebt toegepast.
Informatie over vervangende update
Deze update vervangt geen andere updates.
Bestandsinformatie
De Engelse versie van dit software-updatepakket heeft de bestandskenmerken (of latere bestandskenmerken) die in de volgende tabel worden vermeld. De datums en tijden voor deze bestanden worden weergegeven in Coordinated Universal Time (UTC). Wanneer u de bestandsinformatie bekijkt, wordt deze geconverteerd naar de lokale tijd. Als u het verschil tussen UTC en lokale tijd wilt vinden, gebruikt u het tabblad Tijdzone in het item Datum en tijd in Configuratiescherm.
Files die zijn opgenomen in dit updatepakket
| Bestandsnaam | Bestandsgrootte | Datum | Tijd | Pad |
|---|---|---|---|---|
| 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 |
Meer informatie
Meer informatie over de terminologie die Microsoft gebruikt om software-updates te beschrijven.