Cet article décrit un problème dans la gestion structurée des exceptions, les exceptions sont interceptées par un gestionnaire incorrect dans 2013 Compact de Windows Embedded. Une mise à jour est disponible pour résoudre ce problème. Avant d’installer cette mise à jour, toutes les mises à jour précédemment publiées pour ce produit doivent être installés.
Symptômes
Considérez le scénario suivant :
-
Le plug-in pour Visual Studio 2013 Application Builder vous permet de créer une application C++ qui cible 2013 Compact de Windows Embedded.
-
Vous activez la gestion à l’aide du commutateur de compilateur «/EHa» des exceptions asynchrones. Ce commutateur permet à la fois synchrones et structurées gestion des exceptions C++ asynchrone des exceptions (SEH) à être mélangées dans le même code de méthodes de gestion.
-
Vous exécutez le code associé pour intercepter les exceptions de gestion structurée des exceptions.
Dans ce scénario, les exceptions de gestion structurée des exceptions sont toujours interceptées dans le Gestionnaire d’exceptions de première, même si elle est filtrée pour une exception synchrone C++.
Le comportement attendu est exceptions SEH qui est interceptées par le Gestionnaire d’exceptions de points de suspension. Par exemple, vous exécutez l’exemple de code suivant :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"); } } Dans cet exemple, vous avez atteint toujours la première clause catch lorsque l’exception SEH (division entière par zéro) se produit au lieu du Gestionnaire de points de suspension, comme prévu.Résolution
Informations de mise à jour de logiciel
Windows Embedded Compact 2013 mise à jour mensuelle (septembre 2015) est désormais disponible auprès de Microsoft. Pour télécharger cette mise à jour mensuelle 2013 Compact intégré de Windows, accédez à Microsoft OEM Online ou MyOEM.
Conditions préalables
Cette mise à jour est pris en charge que si toutes les mises à jour précédemment publiées pour ce produit ont également été installées.
Nécessite un redémarrage
Après avoir appliqué cette mise à jour, vous devez effectuer une génération complète de l’intégralité de la plateforme. Pour ce faire, utilisez une des méthodes suivantes :
-
Dans le menu Générer , sélectionnez Nettoyer la Solutionet sélectionnez Générer la Solution.
-
Dans le menu Générer , sélectionnez Régénérer la Solution.
Vous n’êtes pas obligé de redémarrer l’ordinateur après avoir appliqué cette mise à jour de logiciel.
Mettre à jour les informations sur le remplacement
Cette mise à jour ne remplace pas les autres mises à jour.
La version anglaise de ce package de mise à jour logicielle a les attributs de fichier (ou attributs ultérieurs) répertoriés dans le tableau suivant. Les dates et heures de ces fichiers sont répertoriées en temps universel coordonné (UTC). Lorsque vous affichez les informations de fichier, il est converti en heure locale. Pour trouver la différence entre l’UTC et l’heure locale, utilisez l’onglet fuseau horaire dans l’élément de Date et heure dans le panneau de configuration.
Fichiers qui sont inclus dans ce package de mise à jour
Nom de fichier |
Taille du fichier |
Date |
Heure |
Chemin d’accès |
---|---|---|---|---|
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 |
Références
Obtenir des informations sur la terminologie que Microsoft utilise pour décrire les mises à jour logicielles.