分层驱动和流驱动的问题

wangyg007   2008-7-22 17:35 楼主
CE驱动程序分为:分层驱动和单体驱动
又分为:本地驱动和流驱动
那么是不是
分层驱动!=流驱动?????
个人认为分层驱动也可以是流驱动
那么:
1、如果(个人认为)成立,那么是不是分层驱动也导出XXX_INIT  XXX_READ  XXX_WRITE  XXX_CLOSE等那些流驱动函数,分层驱动的实现也是写一些跟硬件相关的函数,然后在这几个固定的流接口函数中调用
2、如果(个人认为)不成立,那么分层驱动是怎么实现跟内核和应用程序通信的呢
  是不是也有固定的接口函数??
3、请各位高手用最直白的语言帮我讲讲分层驱动是怎么实现的???
在此谢谢大家了!!!!

   

回复评论 (14)

DING
点赞  2008-7-22 18:57
请各位高手帮忙解答
谢谢啦
!!!!!!!!!
点赞  2008-7-23 09:20
这是2种不同的分法,他们直接没有任何对应的关系。

也就是说流驱动可以是分层的,也可以是你所谓的“单体”的;“本地”驱动也同样。
点赞  2008-7-23 09:37
谢谢yashi!
那一般分层驱动是不是也以流驱动函数接口提供给上层和内核的??
通常的做法是怎么样的呢??
如果不是以流驱动函数形式提供给上层和核心
那是不是也需要有固定的形式???
如果还不是,那到底是怎么样呢???
谢谢大家啦!
点赞  2008-7-23 13:25
还有个重要的问题:

流驱动可以通过CreateFile打开驱动,可以通过WriteFile,ReadFile读写驱动

那么分层驱动是怎么跟应用程序对应起来的呢????

点赞  2008-7-23 13:30
分层驱动主要是从程序结构上来说的,把驱动的框架(MDD)部分,硬件相关(PDD)部分,分成2部分,至于接口,你可以自己定义。当然,MS已经提供了一些MDD,如果你需要使用这些,就要按它规定好的接口来做。

流驱动/内建驱动是从接口上的分的,内建驱动也是系统规定好的接口,就相当于系统有一些函数,要你去填充具体内容;当然,这些接口根据不同的驱动,有不同的名字。
点赞  2008-7-23 13:47
那么就是说分层的驱动在一般情况下是没有固定的接口函数了??
这样怎么能让CE内核和应用程序知道并调用这些函数呢???

在流接口函数中有个DEF文件导出流接口,分层的是不是也是通过这个函数导出的呢??

流接口函数可以象填空一样写驱动
分层可以这样吗??
????????????
迷惑ing~!!!!!!!!!!!!!!
点赞  2008-7-23 14:22
顶起来
点赞  2008-7-23 20:51
分层驱动的接口很固定,MDD层会调用PDD层的函数,这些函数都是定义好的函数参数,函数名可以随便定义,其实是一组函数指针,组成一个回调函数的结构体。不同的驱动有不同的函数结构体定义,只要是标准驱动,M$都已经定义好了的,看MSDN就知道。
不过这些函数倒不会像xxx_Init,xxx_Open这样统一。

分层驱动的PDD层,是通过Source文件,关联到MDD对应的lib,这样链接时就会将两者连到一起,MDD才可以调用PDD了。

应用层的调用是针对MDD层来的,所以在MDD层,这些调用接口是统一的。

标准的分层驱动也是填空,要符合规定。只是每个分层驱动间不一样而已。
点赞  2008-7-23 21:07
{549CAC8D_8AF0_4789_9ACF_2BB92599470D}
点赞  2008-7-23 22:11
def文件的作用在整个wince里都一样,当然也是导出相应的函数接口的。
有的驱动的PDD目录下没有def,有的驱动的MDD目录下没有def,有的两个下都有,但肯定只有一个是导出给应用层的。
点赞  2008-7-24 08:55
非常感谢!!!!
点赞  2008-7-24 09:00
引用: 引用 9 楼 shuiyan 的回复:
分层驱动的接口很固定,MDD层会调用PDD层的函数,这些函数都是定义好的函数参数,函数名可以随便定义,其实是一组函数指针,组成一个回调函数的结构体。不同的驱动有不同的函数结构体定义,只要是标准驱动,M$都已经定义好了的,看MSDN就知道。
不过这些函数倒不会像xxx_Init,xxx_Open这样统一。

分层驱动的PDD层,是通过Source文件,关联到MDD对应的lib,这样链接时就会将两者连到一起,MDD才可以调用PDD了。

应用层…

精辟
点赞  2008-7-25 21:40
MDD层主要是实现应用所需要的接口函数,至于具体函数实现是在PDD层做的.同时PDD还要为MDD提供函数接口,这些接口函数一般会在MDD与PDD公用的头文件中定义好.
MDD一般在编译时会产LIB库文件(可以在SOURCES文件中看到),在PDD层通过SOURCES 文件将MDD产生的LIB库关联进来.PDD编译后生成一个DLL文件(这个DLL文件包括LIB文件在里面),应用在用这个驱动时可以动态的将它加载.而MDD为上层提供的函数是通过DEF文件导出的.
点赞  2008-8-28 23:50
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复