找回密码
 注册
搜索
查看: 1365|回复: 5

[讨论] WinCE驱动程序的分类

[复制链接]
发表于 2009-5-23 21:40:17 | 显示全部楼层 |阅读模式
驱动程序是介于操作系统和设备之间的一 个代码层,它的主要作用是为操作系统提供一个接口,以操作不同的硬件,包括物理的

和虚拟的设备。虽然驱动程序有很多种,但从编程的角度来看,无非是往一个 固定的框架中添加相应的代码。这里的框架指的是一个接

口,面向操作系统。代码实现的宗旨是,在正确的时间往正确的寄存器中写正确的值。
       驱动程序的分类,从不同的角度有不同的 分法。拿串口驱动来说,你可以说它是一个分层驱动,你也可以说它是一个流驱动,

你还可以说它是开机时自动加载的驱动……这似乎有点乱。如果你也这么认为, 那建议往下看。如果这些你都了如指掌,那就不浪费时

间了,当然,您愿意找茬,我会很感谢!

       先说本地驱动(Native Drivers)和流驱动(Stream Drivers)。WinCE下的驱动都可以归类到这两个里面,二者必居其一。这是从

驱动程序提供给操作系统的接口来区分的。流驱动为操作系统提供了流接口函数,如XXX_Init()、XXX_Open()、XXX_Read()、

XXX_Write()、XXX_Close()等等。这一类的驱动由Device Manager来管理,它调用ActivateDeviceEx()函数来加载流驱动。

ActivateDeviceEx()的参数是注册表中相应的键,用来设定加载流驱动的属性,如Index、Order、Prefix等等。流驱动的注册表配置信

息一般存放在[HKEY_LOCAL_MACHINE\Drivers\BuiltIn]下。流驱动加载成功后,应用程序通过调用CreateFile()、ReadFile()、

WirteFile()等来访问流驱动的设备。流驱动可以动态管理,驱动调试助手就是用来帮助调试这一类驱动的。

与流驱动相反,本地驱动提供给操作系统的不是标准的流接口,而是事先约定好的特定接口。不同的设备,接口也不一样。WinCE中,常

见的本地驱动有LCD显示驱动、触摸屏驱动、鼠标和键盘驱动及打印机驱动等。可以看到,本地驱动主要是人机界面相关的驱动。它们由

GWES管理,在系统启动时加载。他们在注册表中也有各自相应的配置信息。如键鼠的注册表配置如下:

[HKEY_LOCAL_MACHINE"System"CurrentControlSet"Control"Layouts"00000409]

"Layout File"="kbdmouse.dll"

"Layout Text"="US"

"PS2_AT"="kbdmouse.dll"

"Matrix"="kbdmouse.dll"

本地驱动由操作系统调用,应用程序不能访问。对于这类驱动,驱动调试助手是无能为力的,只能老老实实的编译、下载、验证。

WinCE驱动中经常会听到MDD(Model Device Driver)和PDD(Platform Dependent Driver)的概念,这是从驱动代码实现的结构来区分的。

WinCE的驱动可以是单层的,也可以是PDD+MDD。这没有硬性规定,一个驱动程序可以采用分层结构,也可以采用单层结构。一般来说,

单层结构的驱动执行效率更高,而分层结构的驱动方便代码维护和移植。拿串口驱动来说,完全可以采用单层结构。而把它分为PDD和

MDD,作为一般的开发者,我们只需实现PDD层就可以了,MDD层由微软实现。这样,驱动开发的工作量少很多,而代码的可靠性则有了更

好的保证。至于采用哪一种结构的驱动,主要看你的需求。

WinCE 6.0引入了内核态驱动和用户态驱动的概念。在WinCE5.0及先前的版本中,驱动工作在用户态。从代码方面看,内核态驱动和用户

态驱动没太大差别。如果驱动中没有采用什么特别的技术,内核态驱动和用户态驱动甚至是二进制兼容的。我曾经试过将一个DLL分 别

加载到内核态和用户态,都工作得很好。内核态驱动被加载到内核空间,用户态驱动被加载到特定的用户进程空间中。从执行效率来看

,内核态的驱动效率比用户 态的驱动高。从稳定性方面考虑,用户态的驱动不会对系统产生致命影响,而内核态的驱动相对危险。同样

,采用哪一种类型的驱动,也是看你的需求。

......
发表于 2009-5-25 13:48:29 | 显示全部楼层
[em14] 刚刚入门的菜鸟正需要,谢谢LZ指点
点评回复

使用道具 举报

发表于 2009-11-9 22:09:50 | 显示全部楼层
学习了!
点评回复

使用道具 举报

发表于 2009-12-11 23:49:14 | 显示全部楼层
还没入门
虽然看不太懂,但是还是感谢楼主分享。
点评回复

使用道具 举报

发表于 2009-12-22 19:37:39 | 显示全部楼层
在好好整理下吧,本来我懂一点,现在一点都不懂了
点评回复

使用道具 举报

发表于 2009-12-31 16:14:31 | 显示全部楼层
学习学习
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-14 14:33 , Processed in 0.044873 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表