本文描述了一個問題,即 Windows Embedded Compact 2013 中錯誤的處理器捕捉到 SEH 例外。 現在有更新可以修正這個問題。 安裝這個更新之前,必須先安裝先前為這個產品發行的所有更新。
症狀
請考慮以下案例:
- 你可以使用 Visual Studio 2013 的應用程式建構器外掛,來建立一個針對 Windows Embedded Compact 2013 的 C++ 應用程式。
- 你可以透過「/EHa」編譯器切換器來啟用非同步異常處理。 此切換允許 C++ 同步與結構化異常處理 (SEH) 非同步異常處理方法混合於同一程式碼中。
- 你執行相關程式碼來捕捉 SEH 例外。
在這種情況下,SEH 例外總是被第一個例外處理器攔截,即使它被過濾成 C++ 同步例外。
預期的行為是省略例外處理器捕捉 SEH 例外。
例如,你執行以下範例程式碼:class CMyEx
{
公開:
CMyEx (int nParam) : m_nParam (nParam) { }
智力m_nParam;
};
void TestExceptions ()
{
嘗試
{
整數 a = 42;
int b = 0;
擲出CMyEx (1) ;
投擲97;
整數 C = a / b;
}
接 (const CMyEx &e)
{
wprintf (L“CMyEx exception catch (param=%d) !\n”, e.m_nParam) ;
}
抓住 (......)
{
wprintf (L「未指定類型的例外,被省略號子句捕捉!\n」) ;
}
} 在這個範例中,當 SEH 例外 (整數除) 以零時發生時,你總是會觸發第一個捕捉子句,而不是預期的省略處理程序。
解決方式
軟體更新資訊
Windows Embedded Compact 2013 月度更新 (2015 年 9 月,) 現已於 Microsoft 年提供。 要下載這個 Windows Embedded Compact 2013 月度更新,請前往 Microsoft OEM Online 或 MyOEM。
先決條件
本產品必須已經安裝所有先前發行的更新,才能支援此更新。
重新啟動需求
套用此更新之後,您必須執行整個平台的乾淨組建。 若要解決此問題,請使用下列其中一種方法:
- 在 [建置] 功能表上,選取 [清除方案],然後選取 [建置方案]。
- 在 [建置] 功能表上,選取 [重建方案]。
您不必在套用此軟體更新後重新啟動電腦。
更新取代資訊
這個更新程式不會取代任何其他的更新程式。
檔案資訊
此軟體更新套件的英文版具有下表中所列的檔案屬性 (或較新的檔案屬性)。 這些檔案的日期與時間是以國際標準時間 (UTC) 表示。 當你查看檔案資訊時,它會被轉換成當地時間。 若要查看 UTC 與當地時間的差異,請使用 [控制台] 中 [日期和時間] 項目的 [時區] 索引標籤。
此更新套件隨附的檔案
| 檔案名稱 | 檔案大小 | 日期 | 時間 | 路徑 |
|---|---|---|---|---|
| Frame.cpp | 34,133 | 2014年11月13日 | 23:06 | 私人\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 用來說明軟體更新的術語。