Bài viết này mô tả một vấn đề trong đó ngoại lệ SEH bị bắt bởi một xử lý sai trong Windows Embedded Compact 2013. Đã có bản cập nhật để khắc phục sự cố này. Trước khi bạn cài đặt bản cập nhật này, bạn phải cài đặt tất cả các bản cập nhật đã phát hành trước đó cho sản phẩm này.
Triệu chứng
Hãy cân nhắc các trường hợp sau:
- Bạn sử dụng bổ trợ Bộ dựng Ứng dụng cho Visual Studio 2013 để tạo ứng dụng C++ nhắm mục tiêu Windows Embedded Compact 2013.
- Bạn cho phép xử lý ngoại lệ không đồng bộ bằng cách sử dụng chuyển đổi trình biên dịch "/EHa". Khóa chuyển này cho phép cả phương pháp xử lý ngoại lệ đồng bộ và có cấu trúc (SEH) ngoại lệ không đồng bộ được trộn lẫn trong cùng một mã.
- Bạn chạy mã liên quan để nắm bắt ngoại lệ SEH.
Trong trường hợp này, ngoại lệ SEH luôn được đánh bắt trong xử lý ngoại lệ đầu tiên ngay cả khi nó được lọc cho một ngoại lệ đồng bộ C++.
Hành vi dự kiến là ngoại lệ SEH được đánh bắt bởi bộ xử lý ngoại lệ dấu chấm lửng.
Ví dụ: bạn chạy mã mẫu sau:class CMyEx
{
Công cộng:
CMyEx(int nParam) : m_nParam(nParam) { }
không m_nParam;
};
void TestExceptions()
{
thử nếu
{
int a = 42;
int b = 0;
ném CMyEx(1);
ném 97;
int c = a / b;
}
catch (const CMyEx &e)
{
wprintf(L"CMyEx exception caught (param=%d)!\n", e.m_nParam);
}
bắt (...)
{
wprintf(L"Exception of unspecified type caught by ellipsis clause!\n");
}
} Trong mẫu này, bạn luôn nhấn mệnh đề bắt đầu tiên khi ngoại lệ SEH (số nguyên chia cho không) xảy ra thay vì bộ xử lý dấu chấm lửng như mong đợi.
Giải pháp
Thông tin cập nhật phần mềm
Bản cập nhật Hàng tháng Windows Embedded Compact 2013 (tháng 9 năm 2015) hiện có sẵn từ Microsoft. Để tải xuống bản cập nhật hàng tháng Windows Embedded Compact 2013 này, hãy truy cập Microsoft OEM Onlinehoặc MyOEM.
Điều kiện tiên quyết
Bản cập nhật này chỉ được hỗ trợ nếu tất cả các bản cập nhật đã phát hành trước đó cho sản phẩm này cũng đã được cài đặt.
Yêu cầu khởi động lại
Sau khi bạn áp dụng bản cập nhật này, bạn phải thực hiện một bản dựng sạch của toàn bộ nền tảng. Để thực hiện điều này, hãy sử dụng một trong các phương pháp sau đây:
- Trên menu Bản dựng, chọn Giải pháp sạch, sau đó chọn Giải pháp Xây dựng.
- Trên menu Bản dựng, chọn Dựng lại Giải pháp.
Bạn không phải khởi động lại máy tính sau khi áp dụng bản cập nhật phần mềm này.
Thông tin về việc thay thế bản cập nhật
Bản cập nhật này không thay thế bất kỳ bản cập nhật nào khác.
Thông tin tệp
Phiên bản tiếng Anh của gói cập nhật phần mềm này có các thuộc tính tệp (hoặc các thuộc tính tệp mới hơn) được liệt kê trong bảng sau đây. Ngày và giờ cho các tệp này được liệt kê theo Giờ Quốc tế Phối hợp (UTC). Khi bạn xem thông tin tệp, nó sẽ được chuyển đổi thành giờ địa phương. Để tìm ra sự khác biệt giữa UTC và giờ địa phương, hãy dùng tab Múi giờ trong mục Ngày và Giờ trong Panel điều khiển.
Files có trong gói cập nhật này
| Tên tệp | Kích thước tệp | Ngày | Thời gian | Đường dẫn |
|---|---|---|---|---|
| Frame.cpp | 34,133 | Ngày 13 tháng 11 năm 2014 | 23:06 | Riêng tư\Winceos\Coreos\Core\Corelibc\Crtw32\Eh |
| Fullcrt.lib | 30,027,378 | Ngày 9 tháng 9 năm 2015 | 09:17 | Public\Common\Oak\Lib\X86\Checked |
| Fullcrt.lib | 30,228,292 | Ngày 9 tháng 9 năm 2015 | 09:17 | Public\Common\Oak\Lib\X86\Retail |
| Fullcrt.lib | 28,759,836 | Ngày 9 tháng 9 năm 2015 | 09:16 | Public\Common\Oak\Lib\X86\Debug |
| Fullcrt.lib | 29,278,300 | Ngày 9 tháng 9 năm 2015 | 09:17 | Public\Common\Oak\Lib\Armv7\Checked |
| Fullcrt.lib | 29,566,730 | Ngày 9 tháng 9 năm 2015 | 09:17 | Public\Common\Oak\Lib\Armv7\Retail |
| Fullcrt.lib | 33,139,560 | Ngày 9 tháng 9 năm 2015 | 09:16 | Public\Common\Oak\Lib\Armv7\Debug |
| Msvcr110d.dll | 1,339,952 | Ngày 8 tháng 9 năm 2015 | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| Msvcr110.dll | 754,224 | Ngày 8 tháng 9 năm 2015 | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| Msvcr110d.map | 1,287,579 | Ngày 8 tháng 9 năm 2015 | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| Msvcr110d.rel | 528,834 | Ngày 8 tháng 9 năm 2015 | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| Msvcr110.map | 788,986 | Ngày 8 tháng 9 năm 2015 | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| Msvcr110.rel | 242,169 | Ngày 8 tháng 9 năm 2015 | 05:26 | Public\Common\Sdk\Crt\Bin\X86 |
| Msvcr110d.dll | 1,145,312 | Ngày 8 tháng 9 năm 2015 | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
| Msvcr110.dll | 539,608 | Ngày 8 tháng 9 năm 2015 | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
| Msvcr110d.map | 2,714,275 | Ngày 8 tháng 9 năm 2015 | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
| Msvcr110d.rel | 215,924 | Ngày 8 tháng 9 năm 2015 | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
| Msvcr110.map | 1,258,317 | Ngày 8 tháng 9 năm 2015 | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
| Msvcr110.rel | 122,167 | Ngày 8 tháng 9 năm 2015 | 05:26 | Public\Common\Sdk\Crt\Bin\Arm |
Tham khảo
Tìm hiểu về thuật ngữ mà Microsoft dùng để mô tả các bản cập nhật phần mềm.