FIX SEH 例外は、不適切な例外ハンドラーによってキャッチ WEC 2013 で非同期の例外処理を有効にすると

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:3008664
この資料では、どの 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.cpp34,1332014 年 11 月-13-23:06Private\Winceos\Coreos\Core\Corelibc\Crtw32\Eh
Fullcrt.lib30,027,378--2015 09 9 月09:17Public\Common\Oak\Lib\X86\Checked
Fullcrt.lib30,228,292--2015 09 9 月09:17Public\Common\Oak\Lib\X86\Retail
Fullcrt.lib28,759,836--2015 09 9 月09:16Public\Common\Oak\Lib\X86\Debug
Fullcrt.lib29,278,300--2015 09 9 月09:17Public\Common\Oak\Lib\Armv7\Checked
Fullcrt.lib29,566,730--2015 09 9 月09:17Public\Common\Oak\Lib\Armv7\Retail
Fullcrt.lib33,139,560--2015 09 9 月09:16Public\Common\Oak\Lib\Armv7\Debug
Msvcr110d.dll1,339,952--2015 年 9 月 0805:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110.dll754,224--2015 年 9 月 0805:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110d.map1,287,579--2015 年 9 月 0805:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110d.rel528,834--2015 年 9 月 0805:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110.map788,986--2015 年 9 月 0805:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110.rel242,169--2015 年 9 月 0805:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110d.dll1,145,312--2015 年 9 月 0805:26Public\Common\Sdk\Crt\Bin\Arm
Msvcr110.dll539,608--2015 年 9 月 0805:26Public\Common\Sdk\Crt\Bin\Arm
Msvcr110d.map2,714,275--2015 年 9 月 0805:26Public\Common\Sdk\Crt\Bin\Arm
Msvcr110d.rel215,924--2015 年 9 月 0805:26Public\Common\Sdk\Crt\Bin\Arm
Msvcr110.map1,258,317--2015 年 9 月 0805:26Public\Common\Sdk\Crt\Bin\Arm
Msvcr110.rel122,167--2015 年 9 月 0805:26Public\Common\Sdk\Crt\Bin\Arm
関連情報
について説明します 用語集 を参照してください。

警告: この記事は自動翻訳されています

プロパティ

文書番号:3008664 - 最終更新日: 10/30/2015 00:52:00 - リビジョン: 1.0

Windows Embedded Compact 2013

  • kbautohotfix kbqfe kbhotfixserver kbfix kbmt KB3008664 KbMtja
フィードバック