Korriger: SEH-unntak er fanges opp av feil unntaksbehandler når asynkron unntaksbehandling er aktivert i WEC 2013

VIKTIG: Denne artikkelen ble oversatt med maskinoversettelsesprogramvare fra Microsoft og muligens redigert av Microsoft Community via CTF-teknologi i stedet for av en oversetter. Microsoft tilbyr både menneskelig oversatte og maskinoversatte/Community-redigerte artikler, slik at du får tilgang til alle artiklene i vår Knowledge Base på ditt eget språk. En maskinoversatt eller Community-redigert artikkel er imidlertid ikke alltid perfekt. Den kan inneholde feil i vokabular, syntaks eller grammatikk, mye likt en fremmedspråklig som forsøker å snakke språket ditt. Microsoft har ikke ansvar for unøyaktige opplysninger, feil eller skade forårsaket av feilaktig oversettelse av innholdet eller kundenes bruk av informasjonen. Microsoft oppdaterer jevnlig maskinoversettelsesprogramvaren og -verktøyene for å forbedre redigering av maskinoversatte tekster.

Den engelske versjonen av denne artikkelen er den følgende: 3008664
Denne artikkelen beskriver et problem i hvilke SEH unntak fanget ved en feil protokollbehandleren i Windows Embedded kompakt 2013. Det finnes en oppdatering for å fikse dette problemet. Før du installerer denne oppdateringen, må alle tidligere utgitte oppdateringer for dette produktet installeres.
Symptom
Tenk deg følgende:
  • Du kan bruke Egenskapsverktøy for programmet som er plugin-modulen for Visual Studio-2013 til å opprette en C++-program mot Windows innebygde Compact 2013.
  • Du aktiverer den asynkrone unntaksbehandling ved hjelp av den "/ EHa"bryter med kompilatoren. Denne bryteren tillater begge C++ synkrone og strukturert unntaksbehandling (SEH) asynkron unntaksbehandling metoder for å blandes i samme kode.
  • Du kan kjøre den relaterte koden for å fange SEH-unntak.
I dette scenariet SEH-unntak er alltid fanget opp i den aller første unntaksbehandleren selv om det er filtrert for en synkron C++-unntak.

Den forventede virkemåten er SEH-unntak som fanges opp av ellipse-unntaksbehandler.

For eksempel kan du kjøre følgende eksempelkode:
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");    }}
I dette eksemplet traff du alltid første "catch"-setningsdel når det oppstår SEH-unntak (heltallsdivisjon med null) i stedet for ellipse behandlingsprogrammet som forventet.

Løsning

Informasjon om programvareoppdatering

Windows innebygde Compact 2013 månedlige oppdateringen (September 2015) er nå tilgjengelig fra Microsoft. Hvis du vil laste ned denne oppdateringen for Windows Embedded kompakt 2013, kan du gå til Microsoft OEM Online eller MyOEM.

Forutsetninger

Denne oppdateringen støttes bare hvis alle tidligere utgitte oppdateringer for dette produktet er installert.

Krav om omstart

Når du har installert denne oppdateringen, må du utføre et rent Bygg av hele plattformen. Hvis du vil gjøre dette, bruker du én av følgende metoder:
  • Velg Ren løsningLag-menyen, og velg deretter Bygge løsningen.
  • Velg Bygge løsningLag-menyen.
Du trenger ikke starte datamaskinen på nytt etter at du har brukt denne programvareoppdateringen.

Informasjon om erstatning av oppdatering

Denne oppdateringen erstatter ikke andre oppdateringer.

Filinformasjon

Den engelskspråklige versjonen av denne programvareoppdateringspakken har filattributtene (eller senere filattributter) som er oppført i følgende tabell. Datoene og klokkeslettene for disse filene er oppført i Coordinated Universal Time (UTC). Når du viser filinformasjonen, konverteres den til lokal tid. Hvis du vil finne forskjellen mellom UTC og lokal tid, kan du bruke kategorientidssone under dato og klokkeslett i Kontrollpanel.
Filene som er inkludert i denne oppdateringspakken
FilnavnFilstørrelseDatoTidBane
Frame.cpp34,13313-Nov-201423:06Private\Winceos\Coreos\Core\Corelibc\Crtw32\Eh
Fullcrt.lib30,027,37809-Sep-201509:17Public\Common\Oak\Lib\X86\Checked
Fullcrt.lib30,228,29209-Sep-201509:17Public\Common\Oak\Lib\X86\Retail
Fullcrt.lib28,759,83609-Sep-201509:16Public\Common\Oak\Lib\X86\Debug
Fullcrt.lib29,278,30009-Sep-201509:17Public\Common\Oak\Lib\Armv7\Checked
Fullcrt.lib29,566,73009-Sep-201509:17Public\Common\Oak\Lib\Armv7\Retail
Fullcrt.lib33,139,56009-Sep-201509:16Public\Common\Oak\Lib\Armv7\Debug
Msvcr110d.dll1,339,95208-Sep-201505:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110.dll754,22408-Sep-201505:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110d.Map1,287,57908-Sep-201505:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110d.Rel528,83408-Sep-201505:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110.Map788,98608-Sep-201505:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110.Rel242,16908-Sep-201505:26Public\Common\Sdk\Crt\Bin\X86
Msvcr110d.dll1,145,31208-Sep-201505:26Public\Common\Sdk\Crt\Bin\Arm
Msvcr110.dll539,60808-Sep-201505:26Public\Common\Sdk\Crt\Bin\Arm
Msvcr110d.Map2,714,27508-Sep-201505:26Public\Common\Sdk\Crt\Bin\Arm
Msvcr110d.Rel215,92408-Sep-201505:26Public\Common\Sdk\Crt\Bin\Arm
Msvcr110.Map1,258,31708-Sep-201505:26Public\Common\Sdk\Crt\Bin\Arm
Msvcr110.Rel122,16708-Sep-201505:26Public\Common\Sdk\Crt\Bin\Arm
Referanser
Lær mer om den terminologi som Microsoft bruker for å beskrive programvareoppdateringer.

Advarsel: Denne artikkelen er autooversatt

Egenskaper

Artikkel-ID: 3008664 – Forrige gjennomgang: 10/30/2015 00:51:00 – Revisjon: 1.0

Windows Embedded Compact 2013

  • kbautohotfix kbqfe kbhotfixserver kbfix kbmt KB3008664 KbMtno
Tilbakemelding