この資料では、どの SEH の例外は Windows 埋め込まれたコンパクト 2013 での不適切なハンドラーによって、問題を説明します。この問題を解決する更新プログラムがあります。この更新プログラムをインストールする前にこの製品の以前に発行されたすべての更新プログラムをインストールする必要があります。
現象
次のような状況を考えます。
-
Windows 埋め込まれたコンパクトな 2013 を対象とする C++ アプリケーションを作成するのにには、Visual Studio の 2013 のプラグインのアプリケーション ビルダーを使用します。
-
非同期例外"/EHa"コンパイラ スイッチを使用して処理を有効にするとします。このスイッチは、両方 C++ 同期および構造化例外処理 (SEH) の非同期例外処理メソッドを同じコードで混在させることを許可します。
-
SEH 例外をキャッチするのには関連するコードを実行するとします。
このシナリオでは、場合でも、C++ 同期例外をフィルターには、SEH 例外は非常に最初の例外ハンドラーで常に検出されます。
予想される動作は、省略記号の例外ハンドラーによってキャッチされる SEH 例外です。 たとえば、次のサンプル コードを実行します。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"); } } このサンプルでは、常にヒットした最初の catch 句は、期待どおりに、省略記号のハンドラーではなく、SEH 例外 (0 による整数除算) が発生したとき。解決策
ソフトウェアの更新情報
Windows 埋め込まれたコンパクトな 2013 月例更新プログラム (2015年 9 月) では、マイクロソフトから利用可能なようになりました。この Windows 埋め込まれたコンパクトな 2013 の月例更新プログラムをダウンロードするには、 Microsoft OEM オンラインまたはMyOEMに移動します。
必要条件
この製品の以前に発行されたすべての更新プログラムがインストールされても場合にのみ、この更新プログラムはサポートされています。
再起動の必要性
この更新プログラムを適用した後、プラットフォーム全体のクリーン ビルドを行う必要があります。これを行うには、次の方法のいずれかの手順に従います。
-
[ビルド] メニューは、ソリューションのクリーンを選択し、[ソリューションのビルドを選択します。
-
[ビルド] メニューの[ソリューションのリビルドを選択します。
このソフトウェア更新プログラムを適用した後コンピューターを再起動する必要はありません。
更新プログラムの置き換えに関する情報
この修正プログラムは、他の更新プログラムを置き換えるしません。
このソフトウェア更新プログラム パッケージの英語バージョンがファイル属性 (またはそれ以降のファイル属性) には次の表に記載されています。各ファイルの日付および時刻は、世界協定時刻 (UTC) で示されています。ファイル情報を表示すると、ローカル時刻に変換されます。UTC とローカル時間の時差を確認するには、コントロール パネルの [日付と時刻] で、[タイム ゾーン] タブを使用します。
この更新プログラム パッケージに含まれるファイル
ファイル名 |
ファイル サイズ |
日付 |
時刻 |
Path |
---|---|---|---|---|
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 |
関連情報
Microsoft がソフトウェア更新プログラムを説明するために使用される用語について説明します。