技术开发 频道

Win32 API意外终止WinCE如何应对?

  很多时候导致系统崩溃或瘫痪的原因,可能是剪裁时由于系统文件版本不兼容或者损坏了系统文件,而导致系统发生莫名其妙的致命错误;也可能是在添加外围设备时,由于硬件本身或者驱动程序不匹配或不兼容,导致系统注册表因不明原因损坏或紊乱,还可能是其它各种不明的原因导致系统发生莫名其妙的致命错误,最终造成Win32 API 调用意外终止。

  (2)设备驱动不兼容,导致API函数调用异常
  许多外围设备在桌面版本Windows平台是兼容的,然而在WinCE平台下,因为组件剪裁和定制的关系,许多外围设备会产生兼容性的问题。因此,为嵌入式系统创造可靠的设备驱动接口,在WinCE程序设计的过程中是富有挑战性的部分。虽然幸运的是Win32 API 提供了一套丰富的设备接口方法,使得许多设备接口程序更容易适合于特定嵌入式系统的需要。

  但在某些特定应用与场合下,当设备驱动程序接口必须同时管理不同应用对设备的调用时,WIN32 API 就需要支持对设备的同步和异步的访问,而且适当和适时的处理异步事件,有时对于特定的嵌入式应用程序是至关紧要的。如果这时设备驱动API函数管理不当,就会导致API函数同步或异步调用异常,也会导致Win32 API意外终止。

  (3)Win32 多线程出错,导致API处理出错
  WinCE系统的的特点之一,是在一个运行中的程序里支持执行多个线程。因此,WinCE是一个多任务和多线程的操作系统。对于嵌入式应用程序来说,WinCE的多线程执行能力重要的体现是在它对函数的调用。因此,Win32开发人员需要优先考虑Win32的多线程的创立与同步。

  Win32的多线程处理同其它的嵌入式操作系统是有区别的。在WinCE中多线程管理(时序安排,同步和资源管理)由内核来完成,是通过API函数装入内核来建立和管理应用程序中的多线程。对于若干个同时运行的应用程序,Win32 API已经为多线程管理和同步提供了一套的完备的处理方法。但如果设计不合理当这些多线程出现同步误差时,就会导致Win32 API调用出错,当然也就可能会导致Win32 API调用意外终止了。

  (4)中断处理出错,导致API调用出错
  作为一嵌入式开发人员,最需要关心的是WinCE中断消息的处理规则会不会影响外部系统接口的时序。一般来说,在应用WinCE中断设置时是需要细心设计和准确衡量,以保证其中断时序以及其它相关的特性是与WinCE系统的需求是适应的。

  WinCE的中断消息有各种各样来源,包括操作系统、用户活动如键盘输入、鼠标、触摸屏幕以及其它运行的程序或者线程。因此,嵌入式应用程序经常有时间临界的设备接口需要,需要在最小的规定时间之内对设备和系统事件作出反应。为了支持这样的应用程序,WinCE会提供优先级的中断传送,每一个中断有一个优先级与它们相联系。一般来说,WinCE内核的中断特性是按规则来制定中断时序和优先级。但当发生的意外中断超出规则时,就会造成Win32 API调用出错,从而终止程序的运行。 

0
相关文章