本文介绍 Windows Embedded Compact 2013 中的错误处理程序捕获 SEH 异常的问题。 更新可用于解决此问题。 安全此更新之前,必须安装适用于此产品的所有以前发布的更新。
症状
请考虑以下情形:
- 使用 Application Builder 插件Visual Studio 2013创建面向 Windows Embedded Compact 2013 的 C++ 应用程序。
- 可以使用“/EHa”编译器开关启用异步异常处理。 此开关允许将 C++ 同步和结构化异常处理 (SEH) 异步异常处理方法混合在同一代码中。
- 运行相关代码来捕获 SEH 异常。
在此方案中,SEH 异常始终在第一个异常处理程序中捕获,即使针对 C++ 同步异常进行筛选也是如此。
预期行为是省略号异常处理程序捕获的 SEH 异常。
例如,运行以下示例代码:class CMyEx
{
公共:
CMyEx (int nParam) : m_nParam (nParam) { }
int m_nParam;
};
void TestExceptions ()
{
试用
{
int a = 42;
int b = 0;
throw CMyEx (1) ;
throw 97;
int c = a / b;
}
catch (const CMyEx &e)
{
wprintf (L“CMyEx 异常捕获 (param=%d) !\n”, e.m_nParam) ;
}
catch (...)
{
wprintf (L“省略号子句捕获的未指定类型的异常!\n”) ;
}
} 在此示例中,当发生 SEH 异常 (整数除以零) 而不是按预期出现省略号处理程序时,始终命中第一个 catch 子句。
解决方法
软件更新信息
Windows Embedded Compact 2013 月度更新 (2015 年 9 月) 现已从 Microsoft 提供。 若要下载此 Windows Embedded Compact 2013 月度更新,请转到 Microsoft OEM Online 或 MyOEM。
先决条件
仅当已安装了以前针对该产品发布的所有更新时,才支持此更新。
重启要求
应用此更新后,必须对整个平台执行清理生成。 为此,请使用下列方法之一:
- 在“生成”菜单上,依次选择“清理解决方案”和“生成解决方案”。
- 在“生成”菜单上,选择“重新生成解决方案”。
应用此软件更新后,无需重启计算机。
更新替换信息
此更新不替代任何其他更新。
文件信息
此软件更新包的英文版本具有下表列出的文件属性(或更新的文件属性)。 这些文件的日期和时间按协调世界时 (UTC) 列出。 查看文件信息时,会将其转换为本地时间。 要了解 UTC 与本地时间之间的时差,请使用“控制面板”中“日期和时间”项中的“时区”选项卡。
包含在此更新包中的文件
| 文件名 | 文件大小 | 日期 | 时间 | 路径 |
|---|---|---|---|---|
| Frame.cpp | 34,133 | 2014 年 11 月 13 日 | 1:23:06 AM | Private\Winceos\Coreos\Core\Corelibc\Crtw32\Eh |
| Fullcrt.lib | 30,027,378 | 2015 年 9 月 9 日 | 09:17 | Public\Common\Oak\Lib\X86\Checked |
| Fullcrt.lib | 30,228,292 | 2015 年 9 月 9 日 | 09:17 | Public\Common\Oak\Lib\X86\Retail |
| Fullcrt.lib | 28,759,836 | 2015 年 9 月 9 日 | 16:09 | Public\Common\Oak\Lib\X86\Debug |
| Fullcrt.lib | 29,278,300 | 2015 年 9 月 9 日 | 09:17 | Public\Common\Oak\Lib\Armv7\Checked |
| Fullcrt.lib | 29,566,730 | 2015 年 9 月 9 日 | 09:17 | Public\Common\Oak\Lib\Armv7\Retail |
| Fullcrt.lib | 33,139,560 | 2015 年 9 月 9 日 | 16:09 | Public\Common\Oak\Lib\Armv7\Debug |
| Msvcr110d.dll | 1,339,952 | 2015 年 9 月 8 日 | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| Msvcr110.dll | 754,224 | 2015 年 9 月 8 日 | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| Msvcr110d.map | 1,287,579 | 2015 年 9 月 8 日 | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| Msvcr110d.rel | 528,834 | 2015 年 9 月 8 日 | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| Msvcr110.map | 788,986 | 2015 年 9 月 8 日 | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| Msvcr110.rel | 242,169 | 2015 年 9 月 8 日 | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| Msvcr110d.dll | 1,145,312 | 2015 年 9 月 8 日 | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
| Msvcr110.dll | 539,608 | 2015 年 9 月 8 日 | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
| Msvcr110d.map | 2,714,275 | 2015 年 9 月 8 日 | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
| Msvcr110d.rel | 215,924 | 2015 年 9 月 8 日 | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
| Msvcr110.map | 1,258,317 | 2015 年 9 月 8 日 | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
| Msvcr110.rel | 122,167 | 2015 年 9 月 8 日 | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
参考资料
了解 Microsoft 用于描述软件更新的术语。