Acest articol descrie o problemă în care SEH excepții sunt capturate de o rutină de tratare greșit în Windows Embedded Compact 2013. O actualizare este disponibilă pentru a remedia această problemă. Înainte de a instala această actualizare, trebuie să se instaleze toate actualizările emise anterior pentru acest produs.
Simptome
Să luăm în considerare următorul scenariu:
-
Utilizați generator aplicație plug-in pentru Visual Studio 2013 pentru a crea o aplicație C++ Windows Embedded Compact 2013 care are drept țintă.
-
Activați excepție asincron tratarea utilizând parametrul compilator "/EHa". Acest parametru permite atât C++ sincron și structurate excepție tratarea (SEH) asincron excepție tratarea metode de a fi amestecat în același cod.
-
Executați codul corelate pentru a captura SEH excepții.
În acest scenariu, SEH excepții sunt întotdeauna prins în prima rutina de excepție chiar dacă este filtrat pentru o excepție sincron C++.
Comportamentul normal este SEH excepții este prins de puncte de suspensie excepție rutina de tratare. De exemplu, executați următorul exemplu de cod: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"); } } În acest exemplu, să apăsați întotdeauna prima captură clauza când excepție SEH (număr întreg împărțire la zero) apare în loc de puncte de suspensie rutina conform așteptărilor.Rezolvare
Informații de actualizare software
Windows Embedded Compact 2013 lunar Update (septembrie 2015) este acum disponibilă de la Microsoft. Pentru a descărca această actualizare lunară Windows Embedded Compact 2013, du-te la Microsoft OEM Online sau MyOEM.
Cerințe preliminare
Această actualizare este acceptată numai dacă toate actualizările emise anterior pentru acest produs, de asemenea, s-au instalat.
Cerinţă de repornire
După ce Aplicați această actualizare, trebuie să efectuați o compilare curată a platformei întreg. Pentru aceasta, utilizați una dintre următoarele metode:
-
În meniul de compilare , selectați Soluţie curată, și apoi selectați Construi soluții.
-
În meniul de compilare , selectați Reconstrui soluții.
Nu trebuie să reporniți computerul după aplicarea acestei actualizări de software.
Informații despre înlocuirea vreunei actualizări
Această actualizare nu înlocuiește nicio altă actualizare.
Versiunea în limba engleză a acestui pachet de actualizare software-ul are atributele de fişier (sau atribute de fişier mai recente) enumerate în următorul tabel. Datele şi orele acestor fişiere sunt exprimate în listă în ora universală (UTC). Când vizualizaţi informaţiile despre fişiere, acestea sunt transformate în ora locală. Pentru a afla diferența între timpul universal și cel local, utilizați fila de fus orar în elementul dată și oră din panoul de Control.
Fișierele care sunt incluse în acest pachet de actualizare
Nume de fișier |
Dimensiune fișier |
Data |
Ora |
Cale |
---|---|---|---|---|
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 |
Referințe
Aflați despre terminologia utilizată de Microsoft pentru a descrie actualizările de software.