Chương trình sử dụng ngắt 16h viết bằng C++ chạy trên nền Windows bị thông báo lỗi bộ xử lý hoặc không thể truy xuất các thanh ghi được?

Chương trình sử dụng ngắt 16h viết bằng C++ chạy trên nền Windows bị thông báo lỗi bộ xử lý hoặc không thể truy xuất các thanh ghi được. Chương trình tương tự viết bằng C chạy trên nền DOS thì hoạt động được. Xin hướng dẫn.
Nguyen Ha My
Nguyen Ha My
Trả lời 15 năm trước
Windows là HĐH có độ an toàn cao hơn nhiều so với DOS. Thực vậy, nếu viết chương trình chạy trên DOS, bạn có thể dùng ngắt bất kỳ (thí dụ 16h), DOS không giám sát và kiểm soát gì cả. Tuy nhiên Windows luôn giám sát và kiểm soát hành vi của ứng dụng, nếu thấy ứng dụng thực hiện 1 lệnh dễ gây nguy hiểm cho hệ thống (thí dụ lệnh ngắt 16h), Windows sẽ chặn lại và báo lỗi chứ không thực hiện. Tóm lại, nếu bạn lập trình trên Windows, code nằm trong ứng dụng của bạn không được phép thực hiện ngắt (bất kỳ ngắt nào). Việc dùng ngắt chỉ được phép trong các file thư viện *.dll hay các file driver và tuân theo yêu cầu nghiêm ngặt của Windows.