CE驱动程序分为:分层驱动和单体驱动
又分为:本地驱动和流驱动
那么是不是
分层驱动!=流驱动?????
个人认为分层驱动也可以是流驱动
那么:
1、如果(个人认为)成立,那么是不是分层驱动也导出XXX_INIT XXX_READ XXX_WRITE XXX_CLOSE等那些流驱动函数,分层驱动的实现也是写一些跟硬件相关的函数,然后在这几个固定的流接口函数中调用
2、如果(个人认为)不成立,那么分层驱动是怎么实现跟内核和应用程序通信的呢
是不是也有固定的接口函数??
3、请各位高手用最直白的语言帮我讲讲分层驱动是怎么实现的???
在此谢谢大家了!!!!
这是2种不同的分法,他们直接没有任何对应的关系。
也就是说流驱动可以是分层的,也可以是你所谓的“单体”的;“本地”驱动也同样。
谢谢yashi!
那一般分层驱动是不是也以流驱动函数接口提供给上层和内核的??
通常的做法是怎么样的呢??
如果不是以流驱动函数形式提供给上层和核心
那是不是也需要有固定的形式???
如果还不是,那到底是怎么样呢???
谢谢大家啦!
还有个重要的问题:
流驱动可以通过CreateFile打开驱动,可以通过WriteFile,ReadFile读写驱动
那么分层驱动是怎么跟应用程序对应起来的呢????
分层驱动主要是从程序结构上来说的,把驱动的框架(MDD)部分,硬件相关(PDD)部分,分成2部分,至于接口,你可以自己定义。当然,MS已经提供了一些MDD,如果你需要使用这些,就要按它规定好的接口来做。
流驱动/内建驱动是从接口上的分的,内建驱动也是系统规定好的接口,就相当于系统有一些函数,要你去填充具体内容;当然,这些接口根据不同的驱动,有不同的名字。
那么就是说分层的驱动在一般情况下是没有固定的接口函数了??
这样怎么能让CE内核和应用程序知道并调用这些函数呢???
在流接口函数中有个DEF文件导出流接口,分层的是不是也是通过这个函数导出的呢??
流接口函数可以象填空一样写驱动
分层可以这样吗??
????????????
迷惑ing~!!!!!!!!!!!!!!
分层驱动的接口很固定,MDD层会调用PDD层的函数,这些函数都是定义好的函数参数,函数名可以随便定义,其实是一组函数指针,组成一个回调函数的结构体。不同的驱动有不同的函数结构体定义,只要是标准驱动,M$都已经定义好了的,看MSDN就知道。
不过这些函数倒不会像xxx_Init,xxx_Open这样统一。
分层驱动的PDD层,是通过Source文件,关联到MDD对应的lib,这样链接时就会将两者连到一起,MDD才可以调用PDD了。
应用层的调用是针对MDD层来的,所以在MDD层,这些调用接口是统一的。
标准的分层驱动也是填空,要符合规定。只是每个分层驱动间不一样而已。
{549CAC8D_8AF0_4789_9ACF_2BB92599470D}
def文件的作用在整个wince里都一样,当然也是导出相应的函数接口的。
有的驱动的PDD目录下没有def,有的驱动的MDD目录下没有def,有的两个下都有,但肯定只有一个是导出给应用层的。
引用: 引用 9 楼 shuiyan 的回复:
分层驱动的接口很固定,MDD层会调用PDD层的函数,这些函数都是定义好的函数参数,函数名可以随便定义,其实是一组函数指针,组成一个回调函数的结构体。不同的驱动有不同的函数结构体定义,只要是标准驱动,M$都已经定义好了的,看MSDN就知道。
不过这些函数倒不会像xxx_Init,xxx_Open这样统一。
分层驱动的PDD层,是通过Source文件,关联到MDD对应的lib,这样链接时就会将两者连到一起,MDD才可以调用PDD了。
应用层…
精辟
MDD层主要是实现应用所需要的接口函数,至于具体函数实现是在PDD层做的.同时PDD还要为MDD提供函数接口,这些接口函数一般会在MDD与PDD公用的头文件中定义好.
MDD一般在编译时会产LIB库文件(可以在SOURCES文件中看到),在PDD层通过SOURCES 文件将MDD产生的LIB库关联进来.PDD编译后生成一个DLL文件(这个DLL文件包括LIB文件在里面),应用在用这个驱动时可以动态的将它加载.而MDD为上层提供的函数是通过DEF文件导出的.