Αυτό το άρθρο περιγράφει ένα ζήτημα στο οποίο SEH εξαιρέσεις έχουν αλιευθεί από ένα εσφαλμένο δείκτη χειρισμού στο Windows ενσωματωμένο συμπαγή 2013. Διατίθεται μια ενημερωμένη έκδοση για να επιλύσετε αυτό το ζήτημα. Πριν να εγκαταστήσετε αυτήν την ενημερωμένη έκδοση, πρέπει να εγκαταστήσετε όλες τις ενημερωμένες εκδόσεις που έχουν εκδοθεί προηγουμένως για αυτό το προϊόν.
Συμπτώματα
Εξετάστε το ακόλουθο σενάριο:
-
Μπορείτε να χρησιμοποιήσετε τη Δόμηση εφαρμογών προσθήκης για το Visual Studio 2013 για να δημιουργήσετε μια εφαρμογή C++ που να στοχεύει στο Windows ενσωματωμένο συμπαγή 2013.
-
Μπορείτε να ενεργοποιήσετε την εξαίρεση ασύγχρονης χειρισμό, χρησιμοποιώντας το διακόπτη μεταγλωττιστή "/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 (ακέραια διαίρεση με το μηδέν) αντί για το πρόγραμμα χειρισμού έλλειψη, όπως αναμένεται.Προτεινόμενη αντιμετώπιση
Πληροφορίες ενημερωμένης έκδοσης λογισμικού
Ενσωματωμένο συμπαγή 2013 μηνιαία ενημερωμένη έκδοση των Windows (Σεπτεμβρίου 2015) είναι τώρα διαθέσιμη από τη Microsoft. Για να κάνετε λήψη αυτό Μηνιαίας ενημερωμένης έκδοσης των Windows ενσωματωμένο συμπαγή 2013, μεταβείτε στην Microsoft OEM Online ή MyOEM.
Προϋποθέσεις
Αυτή η ενημερωμένη έκδοση υποστηρίζεται μόνο αν έχουν εγκατασταθεί επίσης όλες τις ενημερωμένες εκδόσεις που έχουν εκδοθεί προηγουμένως για αυτό το προϊόν.
Απαίτηση επανεκκίνησης
Μετά την εφαρμογή αυτής της ενημερωμένης έκδοσης, πρέπει να εκτελέσετε εκ νέου δημιουργία ολόκληρης της πλατφόρμας. Για να γίνει αυτό, χρησιμοποιήστε μία από τις ακόλουθες μεθόδους:
-
Από το μενού Δημιουργία , επιλέξτε Καθαρή λύσηκαι, στη συνέχεια, επιλέξτε Δημιουργία λύσης.
-
Από το μενού Δημιουργία , επιλέξτε Αναδόμηση λύση.
Δεν χρειάζεται να κάνετε επανεκκίνηση του υπολογιστή μετά την εφαρμογή αυτής της ενημερωμένης έκδοσης λογισμικού.
Πληροφορίες αντικατάστασης ενημέρωσης
Αυτή η ενημερωμένη έκδοση δεν αντικαθιστά άλλες ενημερωμένες εκδόσεις.
Η αγγλική έκδοση αυτού του πακέτου ενημερωμένης έκδοσης λογισμικού έχει τα χαρακτηριστικά αρχείου (ή νεότερα χαρακτηριστικά αρχείου) που παρατίθενται στον παρακάτω πίνακα. Οι ημερομηνίες και οι ώρες για τα αρχεία αυτά αναφέρονται σε Συντονισμένη παγκόσμια ώρα (UTC). Όταν προβάλλετε τις πληροφορίες του αρχείου, μετατρέπεται σε τοπική ώρα. Για να βρείτε τη διαφορά μεταξύ της ώρας 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 |
Αναφορές
Πληροφορίες σχετικά με την ορολογία που χρησιμοποιεί η Microsoft για την περιγραφή ενημερωμένων εκδόσεων λογισμικού.