【聚杰网移动开发】WinCE嵌入式开发程序入门
典型的Windows CE的硬件平台的内存结构是与基于 Windows系统的台式电脑的内存结构十分不同的。 为了知道内存通常如何在Windows中被处理的 ,考查基于Windows CE的最普通的代表性的设备-手持电脑,是很有用的。
在手持电脑中,RAM被分割成两个主要的部分:存储内存和程序内存。 向两部分分配的RAM的量能被手持电脑用户修改(在限制范围内)。 这个RAM的划分图如图4所示。
在手持电脑中的存储内存类似于台式电脑的硬盘RAM。 它被用来存储数据和非系统应用程序。它的三段中每一段被不同的一套WIN32 API 访问函数:
Windows CE系统寄存器类似于Windows NT和Windows 95的操作系统的寄存器。你能利用WIN32 寄存器函数来操纵寄存器中键和数值。
被用户安装的应用程序和数据在一般文件存储段中。Windows CE文件系统API 是标准WIN32 文件系统的子集函数。
对于数据库应用程序,由Windows CE 数据库API来存储被管理存储。这API 对Windows CE是唯一的 ,并且在其它的WIN32 平台中没有。
程序内存被用于系统和非系统程序的堆栈存储。 非系统应用程序从存储内存(或者或许PC卡)被取得,非压缩的并且被装入要执行程序内存中。
意外情况处理
意外情况处理是强大的编程技术,相应一套的WIN32 API 起函数能容易的发现未预料到的错误状况,并且使之恢复。结构化的意外情况处理,允许危险的段的代码可能由于硬件资源的问题、设备的冲突和微小的编码错误而导致失败,以使这部分程序与其余的应用程序分开。这保护了应用程序,使之免于过早的终止或者产生敏感的系统问题。
结构化的意外情况处理包括定义一系列声明作为保护,并且为第一套的声明定义了另一个套声明作为意外情况句柄。 意外情况句柄定义了一个或多个声明来保障系统的运行,而不管保护声明的现有的状态。
在大多数32 位Windows平台上应用WIN32 API 的程序员在运用意外情况句柄的时候通常有两种选择,用C或 C++ 编写应用程序,并且利用WIN32提供的处理意外情况的宏,或者利用C++ 编写应用程序,并且使用C++ 语言定义的意外情况处理函数。
对于这种程序的编写,Windows CE的开发者因无法访问C++的(面向Windows CE的Visual C++ 目前还不支持意外情况处理,所以必须使用WIN32 API的意外情况处理宏。
为了应用WIN32意外情况处理,你将使用一套在WIN32 API 中被定义的宏。 下面一段代码显示其基本概念:
_try {
// The statements in here have a possibility of failure
// and so are guarded.
}
__finally {
// This is the exception handler. This code will execute
// after the guarded statements, no matter what happened
// in the guarded block of code above.
}
// This code will execute normally if the program flow allows
// it (no goto, exit, etc.)
__try 以及__finally 宏产生了使用意外情况句柄的所必要的底层代码。
意外情况的处理对诸如在嵌入式的应用程序中的那些普通的多线程序是有用的。WIN32结构化意外情况处理宏 是一种容易并且强大的保护应用程序使之免受未预料到的失败的方法。
5




