In dit artikel wordt een probleem in welke SEH uitzonderingen worden gevangen door een verkeerde handler in Windows ingesloten Compact 2013 beschreven. Er is een update beschikbaar om dit probleem te verhelpen. Voordat u deze update installeert, moeten alle eerder uitgebrachte updates voor dit product zijn geïnstalleerd.
Symptomen
Overweeg het volgende scenario:
-
De invoegtoepassing voor Visual Studio 2013 Application Builder u maakt een C++-toepassing die doelen Windows ingesloten Compact 2013.
-
U kunt de asynchrone verwerking met behulp van de "/EHa" compiler-schakeloptie van uitzonderingen. Met deze schakeloptie kan zowel C++ synchrone en gestructureerde afhandeling van uitzonderingen methoden in dezelfde code om de verwerking van asynchrone uitzonderingen voor (SEH).
-
De gerelateerde code catch SEH uitzonderingen worden uitgevoerd.
In dit scenario SEH uitzonderingen altijd gevangen in de allereerste uitzonderingshandler zelfs als het gefilterd voor een synchrone C++-uitzondering.
Het verwachte gedrag is SEH uitzonderingen wordt gevangen door de uitzonderingshandler weglatingsteken. Bijvoorbeeld, kunt u de volgende code uitvoeren: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"); } } In dit voorbeeld wordt druk u altijd op de eerste catch-component wanneer de SEH-uitzondering (geheel getal delen door nul) in plaats van de handler weglatingsteken plaatsvindt zoals verwacht.Oplossing
Informatie over de software-update
Windows ingesloten Compact 2013 maandelijkse Update (September 2015) is nu beschikbaar bij Microsoft. Ga naar Microsoft OEM Online of MyOEMom te downloaden van de maandelijkse update van Windows ingesloten Compact 2013.
Vereisten
Met deze update wordt alleen ondersteund als ook alle eerder uitgebrachte updates voor dit product zijn geïnstalleerd.
Opnieuw opstarten
Nadat u deze update hebt toegepast, moet u het hele platform leegmaken en opnieuw opbouwen uitvoeren. Gebruik hiervoor een van de volgende methoden:
-
Open het menu BuildSchone oplossingselecteren en selecteer Build Solution.
-
Selecteer in het menu BuildOplossing bouwen.
U hoeft niet de computer opnieuw opstarten nadat u deze update hebt toegepast.
Informatie over het vervangen van updates
Deze update vervangen geen andere updates.
De Engelse versie van dit updatepakket heeft de bestandskenmerken (of recentere bestandskenmerken) die in de volgende tabel worden weergegeven. De datums en tijden voor deze bestanden worden weergegeven in Coordinated Universal Time (UTC). Wanneer u de bestandsinformatie weergeeft, wordt deze naar lokale tijd geconverteerd. Gebruik het tabblad tijdzone in het onderdeel datum en tijd in het Configuratiescherm om het verschil tussen UTC en lokale tijd.
Bestanden die in dit updatepakket zijn opgenomen
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 |
Referenties
Meer informatie over de terminologie die door Microsoft wordt gebruikt om softwareupdates te beschrijven.