技术开发 频道

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

  (5)内存管理不善,导致API调用问题
Win32 API为向开发人员提供了一套完备的和一致的接口。像其它的32 位Windows平台一样,Win CE操作系统也有虚拟内存的特性。在绝大部分应用程序开发时,开发人员是不需要考虑特定内存结构,WinCE内核会自动管理内存资源,和向Win32 API 提供必要的分配、使用和释放内存的接口。然而某些嵌入式应用程序,特别是那些有严格的内存资源约束或者临界时序要求的,又因为在内存管理的方法上也有许多不同的处理方式,当所选择的方式管理内存不当时,就有机会会导致内存失败,进而影响到Win32 API的调用。

  3. Win32 API意外终止的处理方法

  (1)利用结构化宏来处理意外发生
  Win32拥有强大的编程技术来处理意外情况的发生,它有相应一套的Win32 API函数来发现未预料到的错误状况,并且使之恢复。这种Win32意外情况处理函数,我们称为Win32 API定义的宏,这是一种结构化的方式。

  这种结构化宏的意外处理方式,允许危险的段代码可能由于硬件资源问题、设备冲突和微小编码错误而导致失败,它能使这部分可能失败的程序与其余的应用程序分开。这就保护了应用程序能继续运行,使之免于意外终止或者产生敏感的系统问题。因此,Win32结构化意外情况处理宏,是一种容易实现并且强大的保护应用程序免受未预料到的失败的方法。

  (2)定制设备的WIN32 API
  嵌入式系统在处理设备接口问题是一个挑战。当开发一个新的硬件平台时,除非只使用常规的硬件,否则就可能需要定制设备驱动程序来支持新的外围设备,这时也就可能需要配置WinCE来包含一些设备处理必要的组件,这时为满足新的设备也会需要编写相应的驱动接口代码。因此,为保证新的外围设备调用的一致性,关键就在于定制WIN32 API。

  (3)有效应用多线程编程技术
  进程是一种拥有自己的内存、文件句柄和其它系统资源的运行程序, 单个进程也叫线程。为了向应用程序提供多线程功能,Win32 API函数集中提供了一些处理多线程的函数集,它包括创建线程、终止线程、建立互斥区等,Win32 API还提供一组能使线程阻塞其自身执行的等待函数。因此,在某些环境中,当某一进程通过某种形式的进程间通信要求另一进程关闭时,在应用这些API函数时就应该要求保证干净地关闭其它的Win32 应用程序,小心避免多线程冲突问题,这样就能避免Win32 API调用意外的发生。

  (4)合理配置内存,减少API调用失败
  WinCE的内存管理有一套完整的机制,当系统内存溢出时,它会选择一个或几个适当的进程杀掉以维持系统的稳定运行。不过虽然WinCE竭尽全力去选择那些真正是罪魁祸首的进程,但是难免会出错,到头来系统会因为误杀进程从而使内存管理失败。这个时候就需要在程序设计时人为地设定一些规则,通过按一定的规则来调整进程以实现干预控制。但需要注意的是,人为地设定某些干预规则是比较危险的,除非能100%肯定被干预的进程有问题,不然这种愚蠢的干预也会导致Win32 API意外终止。

  简而言之, WinCE与其它Windows平台兼容的Win32 API的特性消除了许多嵌入式平台的障碍,开发人员通过使用Win32 API技术节省了许多开发成本,但前提是必须保证在WinCE系统下Win32 API不会因为误用而意外的终止正常的运行。

0
相关文章