peakame
驱动牛犊
驱动牛犊
  • 注册日期2002-06-28
  • 最后登录2013-08-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1821回复:6

NDIS框架一问

楼主#
更多 发布于:2003-08-11 22:53
读了一段时间的NDIS,现在发现其实很多问题我还没弄清楚,如下一些问题我倍感模糊,烦请各位给我释疑一下,谢谢了!
1. 小端口驱动是否是物理网卡的驱动?是否和网卡类型、总线类型?DMA等相关?是否和端口号等物理特性相关?虚拟网卡和小端口驱动是同一个意思吗?
2. 网卡接收到数据是如何传给小端口驱动的?小端口接收到的数据是如何传给协议驱动或中间层驱动的(是通过indicate函数吗)?
3. 协议驱动在NDIS中所处的位置如何?是和TCPIP.SYS、NETBEUI.SYS等协议对等还是在它们下面?如果对等的话,协议驱动是否必须要有相应的应用才能接收到用户数据?使用协议驱动的方式可以收到其它所有协议类型的数据吗?如何接收?
4. 协议驱动接收到的数据如何发送给上层应用(通过什么方式或函数)?协议驱动如何接收上层发送下来的发送数据(通过什么方式或函数)?如何发送出去?
peakame
驱动牛犊
驱动牛犊
  • 注册日期2002-06-28
  • 最后登录2013-08-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-11 22:57
各位讨论讨论呀!
bingjie
驱动小牛
驱动小牛
  • 注册日期2001-08-15
  • 最后登录2007-11-29
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-08-13 13:23
1。Miniport驱动同硬件无关,你可以写一个实际物理网卡的驱动,你也可以写一个根本没有任何硬件的驱动
2。Miniport如何取得硬件提交的数据同硬件有关,主要有PIO和DMA两种方法
3。协议驱动同TCPIP.sys等是对等的,一般来说协议可以收到底层Miniport提交的所有数据,但有些包是可以指定Filter的,如组播包,若想接收组播包则必须向Miniport设置Filter.
4。协议驱动同应用程序交互一般通过WriteFile(ReadFile)或DeviceIoControl进行
floatyang
驱动牛犊
驱动牛犊
  • 注册日期2002-10-17
  • 最后登录2003-10-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-08-15 10:05
我现在也要用一个网卡的驱动程序,很是苦恼。我做的是无线网卡的应用,网卡和网卡驱动都是现成的,但是没有驱动的源码,应用程序如何跟驱动程序接口的呢?

我用pc机的网卡做试验,却发现readfile,writefile都无法对网卡操作,出错原因是网卡不支持这样的操作,那这种情况应用程序怎么跟网卡驱动通信呢?

头疼呀,望大侠指教!
wyyy_1124
驱动牛犊
驱动牛犊
  • 注册日期2003-07-31
  • 最后登录2003-10-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-08-15 16:40
对网卡操作就是要与网卡的firmware打交道了。
一般用与网卡提供的DeviceIoControl函数了,其中操作的参数还是比较通用的如OID_802_11_***。
lifeship
驱动小牛
驱动小牛
  • 注册日期2002-10-18
  • 最后登录2005-07-19
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-08-20 00:10
1. 小端口驱动是否是物理网卡的驱动?是否和网卡类型、总线类型?DMA等相关?是否和端口号等物理特性相关?虚拟网卡和小端口驱动是同一个意思吗?
  一般而言,端口驱动适于硬件相关的,比方说,究竟对硬件的那些寄存器进行那些操作,才能真正传输数据。当然,他必须对上面提供特定接口,以便其它程序利用你的端口驱动传输数据。你也可以实现一个端口驱动程序,他并不操作硬件,而是通过其他方法传输数据,这样,就可以看成一块虚拟网卡了。

2. 网卡接收到数据是如何传给小端口驱动的?小端口接收到的数据是如何传给协议驱动或中间层驱动的(是通过indicate函数吗)?

3. 协议驱动在NDIS中所处的位置如何?是和TCPIP.SYS、NETBEUI.SYS等协议对等还是在它们下面?如果对等的话,协议驱动是否必须要有相应的应用才能接收到用户数据?使用协议驱动的方式可以收到其它所有协议类型的数据吗?如何接收?
tcpip.sys 等等都是协议驱成。端口驱程受到数据后通知所有绑定了的协议驱程,有这些驱程自己决定是否需要该数据。所以,要接受数据,写一个协议驱程就可以了。

4. 协议驱动接收到的数据如何发送给上层应用(通过什么方式或函数)?协议驱动如何接收上层发送下来的发送数据(通过什么方式或函数)?如何发送出去?
协议驱程可以通过任何自定一的方法与应用曾通信,当然可以传输数据,可以用writefile,readfile,如果你认为这不能实现你的功能,你可以自定义一个ioctrl,通过DeviceIoControl来进行
杯汝前来,  老子今朝,  放荡形骸!  甚长年抱渴,  咽如焦釜,  于今喜醉,  气似奔雷!  慢说刘伶,  古今达者,  醉后何妨死便埋! 
lifeship
驱动小牛
驱动小牛
  • 注册日期2002-10-18
  • 最后登录2005-07-19
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-08-20 00:12
to floatyang :网卡驱程有了,还要干什么,写一个协议驱程不久可以接受数据了吗,后者绑定tcpip,这样,可以进行tcpip通行了
杯汝前来,  老子今朝,  放荡形骸!  甚长年抱渴,  咽如焦釜,  于今喜醉,  气似奔雷!  慢说刘伶,  古今达者,  醉后何妨死便埋! 
游客

返回顶部