zhanghuan
驱动牛犊
驱动牛犊
  • 注册日期2003-05-02
  • 最后登录2004-02-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1555回复:5

ndis中中间驱动,miniport和protocol的关系??搞蒙了

楼主#
更多 发布于:2003-05-07 18:07
我原先的理解是ndis驱动有miniport和protocol上下两个接口,然后由中间驱动来做协调等的其他工作。

但现在看书,好像可以单独搞了miniport,protocol或中间驱动

麻烦各位帮我理清一下思路

谢谢了
ndisworker
驱动牛犊
驱动牛犊
  • 注册日期2002-10-19
  • 最后登录2012-03-31
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-08 08:31
Put it this way: An IM driver is between the protocol driver (such as TCP/IP) and miniport driver. To protocol driver, it exposes a miniport interface, to underlying miniport it looks like a protocol interface.
zhanghuan
驱动牛犊
驱动牛犊
  • 注册日期2003-05-02
  • 最后登录2004-02-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-08 19:10
那用drivernetworks来创建驱动时,怎么还分intermediate,miniport,protocol三种ndis驱动
baoyibao99
禁止发言
禁止发言
  • 注册日期2003-05-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分894分
  • 威望8415点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-08 23:19
用户被禁言,该主题自动屏蔽!
zhanghuan
驱动牛犊
驱动牛犊
  • 注册日期2003-05-02
  • 最后登录2004-02-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-11 11:40
我觉得还是没把问题说清楚
Jamine0101111
驱动牛犊
驱动牛犊
  • 注册日期2003-04-09
  • 最后登录2003-08-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-05-11 12:46
我原先的理解是ndis驱动有miniport和protocol上下两个接口,然后由中间驱动来做协调等的其他工作。

但现在看书,好像可以单独搞了miniport,protocol或中间驱动

麻烦各位帮我理清一下思路

谢谢了


个人想法:
  一个IM驱动包括miniport和protocol接口。
miniport负责和上层protocol通讯,也就是从protocol来看,ndis驱动是一个虚拟硬件,也就是miniport是给protocol上层使用的.
也就是因为这个原因,miniport的接口的函数表里包括大量的硬件操作,比如interrupt方面的函数。
而且,既然miniport在protocol下层,(大家都知道,向下调用是在发送数据的时候才需要),因此miniport主要实现send的功能,这个我想大家如果看过miniport的函数表会有体会。

protocol负责和下层硬件操作,也就是protocol接口是被硬件NIC驱动调用的,NIC驱动在下层,显然只要在接受数据的时候,才需要向上调用,也就是因为这个原因,protocol接口主要实现receive操作

其次,因为protocol接口是被NIC驱动(我们可以抽象理解为就是硬件体)调用的,大家都知道,硬件是独立于上层软件体的,他有自己的处理器,因此一般情况下,软件告诉硬件去完成某一件时期后,软件是马上返回而不是等待硬件的完成,而任何硬件操作完成后,都需要告诉软件“完成”了。
因此,大家如果去看protocol接口的设计,大家会发现包括了大量的\"complete\"函数,而相反在miniport接口里,一个也没有发现。

Miniport和Protocol接口之间没有任何的直接数据传递,比如Protocol接受到数据后,不回在通过Miniport接口。

大家应该理解一点:
Protocol接口是给NIC驱动调用的
Miniport接口是给上层Protocol协议调用的
因此更不就没有必要在Protocol接口和Miniport接口之间有任何的数据传递。


以上只是我这一两天对NDIS驱动的分析,是一个完全的初学者,我只是假设我是操作系统开发者,我会怎么做的角度来分析这个问题,怎么样让用户开发驱动更加容易的角度出发。
如果有不对的地方,请各位指正。
游客

返回顶部