Windows CE 下驱动开发基础与编程实现Windows CE 下的串口驱动程序能够处理所有 I/O 行为类似串口的设备,包括基于 16450、16550 UART(通用异步收发芯片)的设备和一些采纳 DMA 的设备,常见的有 9 针串口、红外 I/O 口、Modem 等。在%_WINCEROOT%\Public\Common\OAK\Drivers\Serial 目录下,COM_MDD2 子目录包含新的串口驱动 MDD 层函数代码 。COM16550 子目录包含串口驱动 PDD 层代码。SER16550 子目录包含的一系列函数专用于控制与 16550 兼容的 UART,这样 PDD 层的主要工作就是调用 SER16550 中的函数。还有一个 ISR16550 子目录包含的是串口驱动程序专用的可安装 ISR(中断服务例程),而很多硬件设备驱动程序采纳 CE 默认的可安装 ISR giisr.dll。一般串口设备相应的注册表设置例子与意义如下:键意义"SysIntr"=dword:13串口 1 的中断 ID 为十进制 13"IoBase"=dword:02F8串口 1 的 IO 空间首地址为十六进制 2F8"IoLen"=dword:8串口 1 的 IO 空间长度为 8 个字节"DeviceArrayIndex"=dword:0串口 1 的索引,是 1 的由来"Order"=dword:0串口 1 驱动的加载顺序"DeviceType"=dword:0串口 1 的设备类型"DevConfig"=hex: 10,00 ....串口 1 在与 Modem 设备通讯时的配置,如波特率、奇偶校检等"FriendlyName"="COM1:"串口 1 在拨号程序中显示的名字"Tsp"="Unimodem.dll"串口 1 被用于与 Modem 设备通讯的时候要加载的 TSP(TAPI Service provider)DLL"Prefix"="COM"串口 1 的流接口的前缀"Dll"="com16550.Dll"串口 1 的驱动程序 DLLSysIntr 由 CE 在文件 Nkintr.h 中预定义,用于唯一标识中断设备。OEM 可以在文件 Oalintr.h 中定义自己的 SysIntr。常见的预定义 SysIntr 有 SYSINTR_NOP(中断只由 ISR 处理,IST 不再处理),SYSINTR_RESCHED(重新调度线程) ,SYSINTR_DEVICES(由 CE 预定义的设备中断 ID 的基值) ,SYSINTR_PROFILE 、SYSINTR_TIMING、SYSINTR_FIRMWARE 等都是基于SYSINTR_DEVICES 定义的。IoBase 是串口 1 的 IO 地址空间的首地址,IoLen 是 IO空间的大小。IO 地址空间只存在于 x86 平台,假如在其它平台硬件寄存器必须映射到物理地址空间,那子键的名称为 MemBase 和 MemLen。在 x86 平台更多硬件的寄存器由于 IO 空间的局限也映射到物理地址空间。DeviceArrayIndex 是设备的索引,用于区...