操作硬件是驱动开发的首要任务。
在WinCE下所有的驱动都以用户态的DLL文件形式存在。WinCE驱动程序用到的方法及工具与编写其他任何一个普通的DLL没有什么区别。与所有Win32 DLL一样,Windows CE驱动程序DLL中的代码要得以运行,必须被一些进程动态加载到地址空间。
优点:
Ø 灵活性,运行时动态加载,这样可以轻松实现外设的即插即用。
Ø 稳定性,因为放在内核态虽然是程序运行的更快,但在内核态的驱动如果出现崩溃会导致系统崩溃,但处于用户态的驱动程序即使崩溃也不会影响到内核。
DLL文件本身是无法运行的,如果要运行DLL中的代码,必须先有一个exe进程,把 DLL加载到自己的地址空间内,然后才可执行DLL中的代码。
在WinCE中,有3个系统的进程会加载和执行驱动程序的DLL。它们是Device.exe,GWES.exe和FileSys.exe。它们各自加载的驱动程序类型如下图。
v Device.exe:设备管理器,负责加载WinCE下绝大多数的设备驱动程序;
v GWES.exe:加载的驱动程序是一些和图形界面相关的I/O设备驱动程序;
v FileSys.exe:负责加载所有的文件系统驱动程序。