1.驱动程序是一个抽象物理设备或虚拟设备的功能软件,驱动程序管理这些设备的操作。
2.内建驱动程序和可安装启动程序
wince的设备驱动程序是用户模式的DLL,或者是作为目标文件被静态连接到操作系统。
(1)内建的驱动程序(Built-in Driver)也称本地设备驱动程序(Native Device Driver),被静态链接到GWES,即这些驱动程序不是作为一个单独的DLL存在的。
(2)可安装的驱动程序(Installable Driver)也成流设备驱动程序(Steams Device Driver),由设备管理器(device.exe)动态加载的用户模式的DLL。
3.分层驱动程序和不分层的驱动程序
(1)分层驱动程序(Layered Device Driver)将驱动程序代码分为模型驱动(Model Device Driver ,MDD)的上层和平台相关驱动(Platform Development Driver,PDD)的下层。MDD层包含给定类型所有驱动程序都共用的代码,而PDD层是由特定于给定硬件设备或平台的代码组成的。MDD层调用PDD层的函数来访问硬件或硬件特定的信息。通常MDD层代码是由微软提供的。开发者只需编写特定于硬件平台的PDD层代码,而直接使用MDD层共用代码。开发者将一例驱动导入一个新的硬件平台时,只需要导入PDD层,而直接使用例驱动的MDD层。
分层驱动会导致在驱动程序操作时增加附加功能的调用,这无疑会降低驱动程序的效率,对于时间或性能关键的实时操作,不分层的驱动将更合适。
MDD层主要完成的任务:链接PDD层并定义它们所期望的函数;导出DDI函数给操作系统;处理中断这样的复杂任务。
4.设备管理器:是一个在启动阶段有内核加载并运行的用户进程,它被实现为device.exe.
主要完成一下任务:(1)探测用户是否在基于wince的平台接入了一个外围设备,并设法加载这个外围设备驱动。
(2)在内核中注册特定的文件名,将有应用程序使用的文件I/O函数映射为流接口驱动内对应的函数实现。
(3)通过从外围设备获得一个即插即用标示符找到对应的外围设备驱动或者通过或条用一个探测程序来找到能够处理这个设备的一个驱动。
(4)通过读写注册表加载和跟踪驱动程序。
(5)当不在需要某个设备时卸载他们的驱动。
(6)跟踪启动阶段。
当设备管理器被加载和启动时,它加载资源管理器来从注册表中地区可用资源列表。
总线枚举器也被从设备管理器的进程空间内加载,总线枚举器接着调用总线驱动来列举系统活动总线上上挂接的设备并加载总线上设备的驱动。
注:对于不是设备驱动的Web服务和所有其他服务推荐由Service.exe来加载运行。