WinCE 6.0设备管理器

  WinCE6设备管理器(Device Manager以下简称DM)的职能主要由三个Module完成。NK.exe去加载device.dlldevice.dll加载devmgr.dll。最后活主要由devmgr.dll来干。有个疑问:那WinCE6的设备管理器是不是工作在内核态?由它所加载的驱动是不是也工作在内核态?某本WinCE书籍里讲到WinCE6的“用户态设备管理器”,我有点疑虑。

  DM负责设备驱动的加载,初始化以及卸载。DM将驱动程序的导出接口进行封装,对应用层提供系统API接口。DM可以在设备发生某特定事件时向应用程序发出通知。DM负责管理设备使用的内存和IO端口等资源。

  系统启动之后,首先进行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子键下的驱动信息:

  加载成功的一个串口驱动:

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

posted on 2011-07-21 14:07  NorthCan  阅读(3358)  评论(0编辑  收藏  举报

导航