В данной статье описывается проблема, в какой SEH исключения перехватываются обработчиком неправильно в Windows Embedded Compact 2013. Доступно обновление для устранения этой проблемы. Перед установкой этого обновления необходимо установить все ранее выпущенные обновления для данного продукта.
Симптомы
Рассмотрим следующий сценарий:
-
Создание приложения C++, ориентированном Windows Embedded Compact 2013 использовать подключаемый модуль для Visual Studio 2013 Application Builder.
-
Включение обработки с помощью переключателя компилятора «/eha/EHa» асинхронных исключений. Этот параметр позволяет как синхронный и структурированных обработка исключений C++ методы для смешанного с тем же кодом обработки асинхронных исключений (SEH).
-
Запустить связанный код для перехвата исключения SEH.
В этом случае исключения SEH всегда перехватываются в первом обработчике исключений даже если фильтруется для синхронных исключений C++.
Ожидаемым поведением является исключения 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 (целочисленное деление на ноль) вместо обработчика с многоточием должным образом.Решение
Сведения об обновлении программного обеспечения
Теперь Windows Embedded Compact 2013 ежемесячное обновление (сентябрь 2015) от корпорации Майкрософт. Чтобы загрузить это обновление Windows Embedded Compact 2013 ежемесячно, перейдите к Microsoft OEM Online или MyOEM.
Предварительные условия
Это обновление поддерживается только в том случае, если также были установлены все ранее выпущенные обновления для данного продукта.
Необходимость перезагрузки
После установки этого обновления необходимо выполнить чистую сборку всей платформы. Для этого воспользуйтесь одним из следующих способов:
-
В меню Построение выберите Очистить решениеи выберите Построить решение.
-
В меню Построение выберите команду Перестроить решение.
Нет необходимости перезагрузить компьютер после применения этого обновления программного обеспечения.
Сведения о замене обновлений
Это обновление не заменяет других обновлений.
Английская версия данного пакета обновления содержит атрибуты файла (или более поздние атрибуты файлов), приведенные в следующей таблице. Дата и время для этих файлов указаны в формате общего скоординированного времени (UTC). При просмотре сведений о файле, он преобразуется в локальное время. Чтобы узнать разницу между временем по Гринвичу и местным временем, откройте вкладку часовой пояс элемента Дата и время панели управления.
Файлы, включенные в данный пакет обновления
Имя файла |
Размер файла |
Дата |
Время |
Путь |
---|---|---|---|---|
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 |
Ссылки
Дополнительные сведения о терминологии , которую корпорация Майкрософт использует для описания обновлений программного обеспечения.