Este artículo describe un problema en qué SEH se detectan las excepciones por un controlador incorrecto en 2013 de Windows Embedded Compact. Hay una actualización para corregir este problema. Antes de instalar esta actualización, deben instalar todas las actualizaciones publicadas previamente para este producto.
Síntomas
Imagine el siguiente escenario:
-
Utilice el complemento para Visual Studio 2013 Application Builder para crear una aplicación de C++ destinada a 2013 de Windows Embedded Compact.
-
Habilitar el excepciones asincrónico mediante el modificador de compilador "/EHa". Este modificador permite que ambos sincrónica y estructurado de excepciones de C++ controlar métodos mezclar en el mismo código de control de excepción asincrónica (SEH).
-
Ejecute el código relacionado para detectar excepciones SEH.
En este escenario, siempre se detectan las excepciones de SEH en el primer controlador de excepción incluso si se filtra para una excepción de C++ sincrónica.
El comportamiento esperado es excepciones SEH ser capturadas por el controlador de excepciones de puntos suspensivos. Por ejemplo, ejecute el siguiente código de ejemplo: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"); } } En este ejemplo, siempre alcanzará la primera cláusula catch cuando se produce la excepción de SEH (entero dividido por cero) en lugar del controlador de puntos suspensivos como se esperaba.Solución
Información de actualización de software
Windows Embedded Compact 2013 actualización mensual (septiembre de 2015) ahora está disponible de Microsoft. Para descargar esta actualización mensual de Windows Embedded Compact 2013, vaya a OEM de Microsoft en línea o MyOEM.
Requisitos previos
Esta actualización es compatible solo si también se han instalado todas las actualizaciones publicadas previamente para este producto.
Requisito de reinicio
Después de aplicar esta actualización, debe realizar una compilación limpia de toda la plataforma. Para ello, utilice uno de los métodos siguientes:
-
En el menú Generar , seleccione Limpiar solucióny, a continuación, seleccione Generar solución.
-
En el menú Generar , seleccione Generar solución.
No tiene que reiniciar el equipo después de aplicar esta actualización de software.
Información para sustituir la actualización
Esta actualización no sustituye a otras actualizaciones.
La versión en inglés de este paquete de actualización de software tiene los atributos de archivo (o atributos del archivo más reciente) mostrados en la tabla siguiente. Las fechas y horas de estos archivos se muestran en la hora Universal coordinada (UTC). Al ver la información del archivo, se convierte en hora local. Para encontrar la diferencia entre la hora UTC y la hora local, utilice la ficha zona horaria en el elemento fecha y hora del Panel de Control.
Archivos que se incluyen en este paquete de actualización
Nombre del archivo |
Tamaño de archivo |
Fecha |
Hora |
Ruta de acceso |
---|---|---|---|---|
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 |
Referencias
Obtenga información acerca de la terminología que utiliza Microsoft para describir las actualizaciones de software.