מאמר זה מתאר בעיה ב- SEH אילו חריגים נתפס על-ידי טיפול שגוי ב- Windows 2013 קומפקטי מוטבע. קיים עדכון זמין לפתור בעיה זו. לפני התקנת עדכון זה, עליך להתקין את כל עדכוני האבטחה שהונפקו בעבר עבור מוצר זה.
מאפייני הבעיה
שקול את התרחיש הבא:
-
להשתמש בבונה יישום plug-in עבור Visual Studio 2013 כדי ליצור יישום C++ זה יעדים 2013 קומפקטי מוטבע של Windows.
-
תפעיל בחריגים אסינכרוני באמצעות הבורר מהדר "/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"); } } בדוגמה זו, תמיד פגיעה המשפט הראשון של תפיסת כשמתרחש חריגת SEH (לחלק מספר שלם באפס) במקום המטפל שלוש נקודות כצפוי.פתרון
מידע על עדכון תוכנה
Windows מוטבע קומפקטי 2013 העדכון החודשי (ספטמבר 2015) זמינה כעת מ- Microsoft. כדי להוריד את העדכון החודשי 2013 קומפקטי מוטבע של Windows, עבור אל 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 משתמשת לתיאור עדכוני תוכנה.