Tässä artikkelissa kuvataan ongelma, jossa seh-poikkeukset jäävät väärän käsittelijän kiinni Windows Embedded Compact 2013:ssa. Ongelman voi korjata päivittämällä. Ennen tämän päivityksen asentamista kaikki tähän tuotteeseen aiemmin julkaistut päivitykset on asennettava.
Ongelman ilmenemistapa
Mieti seuraavaa tilannetta:
- Visual Studio 2013:n Application Builder -laajennuksen avulla voit luoda C++-sovelluksen, jonka kohteena on Windows Embedded Compact 2013.
- Voit ottaa asynkronisen poikkeusten käsittelyn käyttöön /EHa-kääntäjävalitsimen avulla. Tämä valitsin sallii sekä C++-synkronointipoikkeamien käsittelyn (SEH) asynkronisten poikkeusten käsittelymenetelmien sekoittamisen samaan koodiin.
- Suoritat liittyvän koodin SEH-poikkeusten saamiseksi.
Tässä skenaariossa SEH-poikkeukset jäävät aina ensimmäiseen poikkeuskäsittelijään, vaikka se suodatetaan C++ -synkronointipoikkeuksen mukaan.
Odotettu toiminta on SEH-poikkeuksia, jotka ellipsipoikkeuksen käsittelijä saa.
Suoritat esimerkiksi seuraavan esimerkkikoodin: luokan CMyEx
{
Yleiset:
CMyEx(int nParam) : m_nParam(nParam) { }
int m_nParam;
};
void TestExceptions()
{
yrittämistä
{
int a = 42;
int b = 0;
heittää CMyEx(1);
heitä 97;
int c = a / b;
}
catch (const CMyEx &e)
{
wprintf(L"CMyEx poikkeus pyydetty (param=%d)!\n", e.m_nParam);
}
catch (...)
{
wprintf(L"Poikkeus määrittämättömästä tyypistä, joka on pyydetty ellipsis-lauseella!\n");
}
} Tässä esimerkissä saavutat aina ensimmäisen saalislausekkeen, kun SEH-poikkeus (kokonaislukujako nollalla) tapahtuu odotetun ellipsikäsittelijän sijaan.
Ratkaisu
Ohjelmistopäivitystiedot
Windows Embedded Compact 2013:n kuukausittainen päivitys (syyskuu 2015) on nyt saatavilla Microsoftilta. Jos haluat ladata tämän Kuukausittaisen Windows Embedded Compact 2013 -päivityksen, siirry Microsoft OEM Onlineen tai MyOEM:iin.
Edellytykset
Tämä päivitys on tuettu vain, jos kaikki tähän tuotteeseen aiemmin julkaistut päivitykset on myös asennettu.
Uudelleenkäynnistystarve
Kun olet asentanut tämän päivityksen, sinun on suoritettava koko ympäristön puhdas koontiversio. Voit tehdä tämän jollakin seuraavista tavoista:
- Valitse Muodosta-valikossaPuhdista ratkaisu ja valitse sitten Muodosta ratkaisu.
- Valitse Muodosta-valikossaMuodosta ratkaisu uudelleen.
Sinun ei tarvitse käynnistää tietokonetta uudelleen tämän ohjelmistopäivityksen asentamisen jälkeen.
Päivityksen korvaustiedot
Tämä päivitys ei korvaa muita päivityksiä.
Tiedoston tiedot
Tämän ohjelmistopäivityspaketin englanninkielisessä versiossa on seuraavassa taulukossa luetellut tiedostomääritteet (tai uudemmat tiedostomääritteet). Näiden tiedostojen päivämäärät ja kellonajat on lueteltu UTC (Coordinated Universal Time) -luettelossa. Kun tarkastelet tiedoston tietoja, ne muunnetaan paikalliseksi ajaksi. Voit selvittää UTC:n ja paikallisen ajan välisen eron Ohjauspaneeli päivämäärä- ja aikakohteenAikavyöhyke-välilehdessä.
Files, jotka sisältyvät tähän päivityspakettiin
| Tiedoston nimi | Tiedoston koko | Päivämäärä | Aika | Polku |
|---|---|---|---|---|
| Frame.cpp | 34,133 | 13.11.2014 | 23:06 | Private\Winceos\Coreos\Core\Corelibc\Crtw32\Eh |
| Fullcrt.lib | 30,027,378 | 09-syys-2015 | 09:17 | Public\Common\Oak\Lib\X86\Checked |
| Fullcrt.lib | 30,228,292 | 09-syys-2015 | 09:17 | Public\Common\Oak\Lib\X86\Retail |
| Fullcrt.lib | 28,759,836 | 09-syys-2015 | 09:16 | Julkinen\Common\Oak\Lib\X86\Debug |
| Fullcrt.lib | 29,278,300 | 09-syys-2015 | 09:17 | Public\Common\Oak\Lib\Armv7\Checked |
| Fullcrt.lib | 29,566,730 | 09-syys-2015 | 09:17 | Public\Common\Oak\Lib\Armv7\Retail |
| Fullcrt.lib | 33,139,560 | 09-syys-2015 | 09:16 | Julkinen\Common\Oak\Lib\Armv7\Debug |
| Msvcr110d.dll | 1,339,952 | 08-syys-2015 | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| Msvcr110.dll | 754,224 | 08-syys-2015 | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| Msvcr110d.map | 1,287,579 | 08-syys-2015 | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| Msvcr110d.rel | 528,834 | 08-syys-2015 | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| Msvcr110.map | 788,986 | 08-syys-2015 | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| Msvcr110.rel | 242,169 | 08-syys-2015 | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| Msvcr110d.dll | 1,145,312 | 08-syys-2015 | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
| Msvcr110.dll | 539,608 | 08-syys-2015 | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
| Msvcr110d.map | 2,714,275 | 08-syys-2015 | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
| Msvcr110d.rel | 215,924 | 08-syys-2015 | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
| Msvcr110.map | 1,258,317 | 08-syys-2015 | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
| Msvcr110.rel | 122,167 | 08-syys-2015 | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
Viitteet
Lue tietoja Microsoftin ohjelmistopäivitystensä kuvaamiseen käyttämästä sanastosta.