In questo articolo viene descritto un problema in cui SEH eccezioni vengono individuate da un gestore errato nel 2013 compatto incorporato di Windows. Un aggiornamento è disponibile per risolvere il problema. Prima di installare questo aggiornamento, è necessario installare tutti gli aggiornamenti rilasciati in precedenza per questo prodotto.
Sintomi
Si consideri lo scenario seguente:
-
Utilizzare il plug-in per Visual Studio 2013 Application Builder per creare un'applicazione C++ destinato a 2013 compatto incorporato di Windows.
-
Attivare le eccezioni asincrone utilizzando l'opzione del compilatore "/EHa". Questa opzione consente sia sincrona e strutturata gestione delle eccezioni C++ metodi per combinare nello stesso codice di gestione delle eccezioni asincrone (SEH).
-
Eseguire il codice correlato per rilevare le eccezioni SEH.
In questo scenario, vengono intercettate sempre eccezioni SEH molto primo gestore eccezioni anche se viene filtrata in modo sincrona eccezione C++.
Il comportamento previsto è eccezioni SEH viene intercettate dal gestore eccezioni i puntini di sospensione. Ad esempio, si esegue il codice di esempio seguente: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 questo esempio, si colpisce sempre la prima clausola catch quando si verifica l'eccezione SEH (divisione intera per zero) anziché il gestore con i puntini di sospensione come previsto.Risoluzione
Informazioni sull'aggiornamento del software
Windows Embedded Compact 2013 aggiornamento mensile (settembre 2015) è ora disponibile da Microsoft. Per scaricare questo aggiornamento mensile 2013 compatto incorporato di Windows, passare a Microsoft OEM Online o MyOEM.
Prerequisiti
Questo aggiornamento è supportato solo se tutti gli aggiornamenti rilasciati in precedenza per questo prodotto sono inoltre stati installati.
Richiesta di riavvio
Dopo avere applicato questo aggiornamento, è necessario eseguire una generazione pulita dell'intera piattaforma. A tale scopo, utilizzare uno dei seguenti metodi:
-
Dal menu Genera scegliere Pulisci soluzionee quindi scegliere Genera soluzione.
-
Scegliere Ricompila soluzionedal menu Compila .
Non è necessario riavviare il computer dopo avere applicato questo aggiornamento software.
Informazioni sulla sostituzione dell'aggiornamento
Questo aggiornamento non sostituisce eventuali altri aggiornamenti.
La versione inglese di questo pacchetto di aggiornamento software presenta gli attributi di file (o attributi successivi) elencati nella tabella riportata di seguito. Le date e ore dei file sono elencate in base al formato UTC (Coordinated Universal Time Coordinated). Quando si visualizzano le informazioni sul file, viene convertito in ora locale. Per calcolare la differenza tra ora UTC e ora locale, utilizzare la scheda fuso orario nell'elemento di Data e ora nel Pannello di controllo.
File inclusi nel pacchetto di aggiornamento
Nome del file |
Dimensione del file |
Data |
Ora |
Percorso |
---|---|---|---|---|
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 |
Riferimenti
Informazioni sulla terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software.