POPRAVEK: Izjeme SEH prestreže napačen program za obravnavo izjem, ko je v programu WEC 2013 omogočeno asinhrono obravnavanje izjem

V tem članku je opisana težava, pri kateri izjeme SEH prestreže napačen način obravnave v izdelku Windows Embedded Compact 2013. Na voljo je posodobitev za odpravo te težave. Preden namestite to posodobitev, morajo biti nameščene vse predhodno izdane posodobitve za ta izdelek.

Znaki

Oglejte si ta scenarij:

  • Z vtičnikom Application Builder za Visual Studio 2013 lahko ustvarite aplikacijo v jeziku C++, ki cilja na Windows Embedded Compact 2013.
  • Asinhrono obravnavanje izjem omogočite s stikalom prevajalnika »/EHa«. To stikalo omogoča, da se metode sinhronega obravnavanja izjem v C++ in strukturiranem obravnavanju izjem (SEH) mešajo v isto kodo.
  • Povezano kodo zaženete, da zajamete izjeme SEH.

V tem scenariju so izjeme SEH vedno uhite v prvem orodju za obravnavo izjem, tudi če je ta filtriran za sinhrono izjemo C++. 

Pričakovano vedenje je, da izjeme SEH zajame obravnava izjem treh pik.

Zaženite na primer to vzorčno kodo:razred CMyEx
{
Javno:
    CMyEx(int nParam) : m_nParam(nParam) { }
    int m_nParam;
};

void TestExceptions()
{
    poskusite
    {
        int a = 42;
        int b = 0;
        vrzi CMyEx(1);
        vrzi 97;
        int c = a / b;
    }
    catch (const CMyEx &e)
    {
        wprintf(L"CMyEx izjema ujeta (param=%d)!\n", e.m_nParam);
    }
    ulov (...)
    {
        wprintf(L"Izjema nedoločene vrste, ujete s stavkom treh pik!\n");
    }
} V tem vzorcu vedno zaženete prvi stavek catch, ko pride do izjeme SEH (deli celo število z nič) namesto rutine za obravnavo treh pik, kot je pričakovano.

Rešitev

Informacije o posodobitvi programske opreme

Mesečna posodobitev za Windows Embedded Compact 2013 (september 2015) je zdaj na voljo pri Microsoftu. Če želite prenesti to mesečno posodobitev za Windows Embedded Compact 2013, obiščite spletno mesto Microsoft OEM ali MyOEM.

Pogoji

Ta posodobitev je podprta le, če so bile nameščene tudi vse predhodno izdane posodobitve za ta izdelek.

Zahteve glede ponovnega zagona

Ko uporabite to posodobitev, morate izvesti čisto graditev celotne platforme. To naredite na enega od teh načinov:

  • V meniju »Graditev « izberite »Počisti rešitev« in nato » Zgradi rešitev«.
  • V meniju »Graditev « izberite »Obnovi rešitev«.

Ko uporabite to posodobitev programske opreme, vam ni treba znova zagnati računalnika.

Informacije o zamenjavi posodobitve

Ta posodobitev ne nadomesti nobenih drugih posodobitev.

Informacije o datotekah

Angleška različica tega paketa posodobitev programske opreme ima atribute datoteke (ali novejše atribute datoteke), ki so navedeni v tej tabeli. Datumi in ure za te datoteke so navedeni v usklajenem univerzalnem času (UTC). Ko si ogledate informacije o datoteki, se te pretvorijo v lokalni čas. Če želite poiskati razliko med UTC-jem in lokalnim časom, uporabite zavihek »Časovni pas« v elementu »Datum in ura« v nadzorna plošča.

Files, that are included in this update package

Ime datoteke Velikost datoteke Datum Čas Pot
Frame.cpp 34,133 13. novembra 2014 23:06 Private\Winceos\Coreos\Core\Corelibc\Crtw32\Eh
Fullcrt.lib 30,027,378 09. september 2015 09:17 Public\Common\Oak\Lib\X86\Checked
Fullcrt.lib 30,228,292 09. september 2015 09:17 Public\Common\Oak\Lib\X86\Retail
Fullcrt.lib 28,759,836 09. september 2015 09:16 Public\Common\Oak\Lib\X86\Debug
Fullcrt.lib 29,278,300 09. september 2015 09:17 Public\Common\Oak\Lib\Armv7\Checked
Fullcrt.lib 29,566,730 09. september 2015 09:17 Public\Common\Oak\Lib\Armv7\Retail
Fullcrt.lib 33,139,560 09. september 2015 09:16 Public\Common\Oak\Lib\Armv7\Debug
Msvcr110d.dll 1,339,952 8. september 2015 05:26 Public\Common\Sdk\Crt\Bin\X86
Msvcr110.dll 754,224 8. september 2015 05:26 Public\Common\Sdk\Crt\Bin\X86
Msvcr110d.zemljevid 1,287,579 08-Sep-2015 05:26 Javno\Skupno\Sdk\Crt\Bin\X86
Msvcr110d.rel 528,834 08-Sep-2015 05:26 Javno\Skupno\Sdk\Crt\Bin\X86
Msvcr110.zemljevid 788,986 08-Sep-2015 05:26 Javno\Skupno\Sdk\Crt\Bin\X86
Msvcr110.rel 242,169 08-Sep-2015 05:26 Javno\Skupno\Sdk\Crt\Bin\X86
Msvcr110d.dll 1,145,312 08-Sep-2015 05:26 Javno\Skupno\Sdk\Crt\Bin\Arm
Msvcr110.dll 539,608 08-Sep-2015 05:26 Javno\Skupno\Sdk\Crt\Bin\Arm
Msvcr110d.zemljevid 2,714,275 08-Sep-2015 05:26 Javno\Skupno\Sdk\Crt\Bin\Arm
Msvcr110d.rel 215,924 08-Sep-2015 05:26 Javno\Skupno\Sdk\Crt\Bin\Arm
Msvcr110.zemljevid 1,258,317 08-Sep-2015 05:26 Javno\Skupno\Sdk\Crt\Bin\Arm
Msvcr110.rel 122,167 08-Sep-2015 05:26 Javno\Skupno\Sdk\Crt\Bin\Arm

      

Sklici

Preberite več o terminologiji, ki jo Microsoft uporablja za opisovanje posodobitev programske opreme.