Šajā rakstā ir aprakstīta problēma, kad SEH izņēmumus uztver nepareizs Windows Embedded Compact 2013 apdarinātājs. Ir pieejams atjauninājums šīs problēmas novēršanai. Pirms šī atjauninājuma instalēšanas ir jāinstalē visi iepriekš izdotie šī produkta atjauninājumi.
Pazīmes
Apsveriet šādu scenāriju:
- Jūs izmantojat lietojumprogrammu veidotāja spraudni, kas paredzēts rīku Visual Studio 2013, lai izveidotu C++ lietojumprogrammu, kas paredzēta operētājsistēmai Windows Embedded Compact 2013.
- Asinhrono izņēmumu apstrādi var iespējot, izmantojot kompilatora slēdzi "/EHa". Šis slēdzis ļauj vienā kodā sajaukt gan C++ sinhronās, gan strukturētās izņēmumu apstrādes (SEH) asinhronās izņēmumu apstrādes metodes.
- Izpildiet saistīto kodu, lai uztvertu SEH izņēmumus.
Šajā scenārijā SEH izņēmumi vienmēr tiek fiksēti pašā pirmajā izņēmumu apdarinātājā pat tad, ja tas ir filtrēts C++ sinhronajam izņēmumam.
Paredzamā darbība ir SEH izņēmumus, ko uztver daudzpunktes izņēmumu apdarinātājs.
Piemēram, palaižat šādu parauga kodu:klase CMyEx
{
Publiska:
CMyEx(int nParam) : m_nParam(nParam) { }
int m_nParam;
};
void TestExceptions()
{
mēģiniet
{
int a = 42;
int b = 0;
metiens CMyEx(1);
metiens 97;
int c = a / b;
}
catch (const CMyEx &e)
{
wprintf(L"CMyEx izņēmums noķerts (parametrs=%d)!\n", e.m_nParam);
}
nozveja (...)
{
wprintf(L"Izņēmums nenorādītam tipam, ko pārņem daudzpunktes klauzula!\n");
}
} Šajā piemērā jūs vienmēr sasniedzat pirmo noķeršanas klauzulu, kad SEH izņēmums (vesels skaitlis dalīt ar nulli) rodas, nevis daudzpunktes apdarinātājs, kā paredzēts.
Risinājums
Informācija par programmatūras atjaunināšanu
Windows Embedded Compact 2013. gada ikmēneša atjauninājums (2015. gada septembris) tagad ir pieejams no Microsoft. Lai lejupielādētu šo Windows Embedded Compact 2013 ikmēneša atjauninājumu, dodieties uz Microsoft OEM Online vai MyOEM.
Priekšnosacījumi
Šis atjauninājums tiek atbalstīts tikai tad, ja ir instalēti arī visi iepriekš izdotie šī produkta atjauninājumi.
Restartēšanas prasības
Pēc šī atjauninājuma lietošanas ir jāveic visas platformas tīrs būvējums. Šajā nolūkā izmantojiet kādu no šīm metodēm:
- Izvēlnē Būvējums atlasiet Tīrs risinājums un pēc tam atlasiet Veidot risinājumu.
- Izvēlnē Būvējums atlasiet Pārbūvēt risinājumu.
Pēc šī programmatūras atjauninājuma lietošanas nav jārestartē dators.
Informācija par atjauninājuma aizstāšanu
Šis atjauninājums neaizstāj citus atjauninājumus.
Informācija par failu
Šīs programmatūras atjauninājumu pakotnes angļu valodas versijā ir faila atribūti (vai vēlāki faila atribūti), kas norādīti tālāk esošajā tabulā. Šo failu datums un laiks ir norādīts atbilstoši universālajam koordinētajam laikam (UTC). Kad skatāt faila informāciju, tā tiek pārvērsta par vietējo laiku. Lai uzzinātu atšķirību starp UTC un vietējo laiku, izmantojiet cilni Laika josla vadības paneļa vienumā Datums un laiks.
Files that are included in this update package
| Faila nosaukums | Faila lielums | Datums | Laiks | Ceļš |
|---|---|---|---|---|
| Frame.cpp | 34,133 | 2014. gada 13. novembris | 23:06 | Private\Winceos\Coreos\Core\Corelibc\Crtw32\Eh |
| Fullcrt.lib | 30,027,378 | 2015. gada 9. septembris | 09:17 | Public\Common\Oak\Lib\X86\Checked |
| Fullcrt.lib | 30,228,292 | 2015. gada 9. septembris | 09:17 | Public\Common\Oak\Lib\X86\Retail |
| Fullcrt.lib | 28,759,836 | 2015. gada 9. septembris | 09:16 | Public\Common\Oak\Lib\X86\Debug |
| Fullcrt.lib | 29,278,300 | 2015. gada 9. septembris | 09:17 | Public\Common\Oak\Lib\Armv7\Checked |
| Fullcrt.lib | 29,566,730 | 2015. gada 9. septembris | 09:17 | Public\Common\Oak\Lib\Armv7\Retail |
| Fullcrt.lib | 33,139,560 | 2015. gada 9. septembris | 09:16 | Public\Common\Oak\Lib\Armv7\Debug |
| Msvcr110d.dll | 1,339,952 | 2015. gada 8. septembris | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| Msvcr110.dll | 754,224 | 2015. gada 8. septembris | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| Msvcr110d.map | 1,287,579 | 2015. gada 8. septembris | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| msvcr110d.rel | 528,834 | 2015. gada 8. septembris | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| msvcr110.map | 788,986 | 2015. gada 8. septembris | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| msvcr110.rel | 242,169 | 2015. gada 8. septembris | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| Msvcr110d.dll | 1,145,312 | 2015. gada 8. septembris | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
| Msvcr110.dll | 539,608 | 2015. gada 8. septembris | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
| Msvcr110d.map | 2,714,275 | 2015. gada 8. septembris | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
| msvcr110d.rel | 215,924 | 2015. gada 8. septembris | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
| msvcr110.map | 1,258,317 | 2015. gada 8. septembris | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
| msvcr110.rel | 122,167 | 2015. gada 8. septembris | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
Atsauces
Uzziniet par terminoloģiju, ko Microsoft izmanto, lai aprakstītu programmatūras atjauninājumus.