WinCE 6.0设备管理器

http://www.cnblogs.com/NorthCan/archive/2011/07/21/2112749.html
WinCE6设备管理器(Device Manager以下简称DM)的职能主要由三个Module完成。NK.exe去加载device.dll,device.dll加载devmgr.dll。最后活主要由devmgr.dll来干。有个疑问:那WinCE6的设备管理器是不是工作在内核态?由它所加载的驱动是不是也工作在内核态?某本WinCE书籍里讲到WinCE6的“用户态设备管理器”,我有点疑虑。
DM负责设备驱动的加载,初始化以及卸载。DM将驱动程序的导出接口进行封装,对应用层提供系统API接口。DM可以在设备发生某特定事件时向应用程序发出通知。DM负责管理设备使用的内存和IO端口等资源。
【WinCE 6.0设备管理器】系统启动之后,首先进行DM初始化,DM加载busenum.dll(称为总线枚举器,以下简称BE),BE负责加载和初始化注册表键BuiltIn下各个子键所描述的驱动。
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn]
"Dll"="BusEnum.dll"
BE首先枚举BuiltIn下的各个子键,找到Dll键值,也就是驱动的DLL文件名。然后调用ActivateDeviceEx函数加载该DLL。之后在[HKEY_LOCAL_MACHINE\Drivers\Active]下为加载成功的驱动创建一个子键,写入一些信息。BE调用驱动导出的XXX_Init,进行一些驱动的初始化操作,如映射IO和一些寄存器等。
BuiltIn子键下的驱动信息:
WinCE 6.0设备管理器
文章图片

加载成功的一个串口驱动:
WinCE 6.0设备管理器
文章图片

除了打印机和显示设备,HID设备,以及触摸屏等驱动由GWES管理之外,DM为WinCE操作系统掌管着其近乎所有的设备驱动。劳苦功高。

    推荐阅读