monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
阅读:1521回复:19

请问在NDIS中怎么将包发给指定的协议驱动?

楼主#
更多 发布于:2002-11-14 08:37
如题!我们知道在协议栈中有很多的协议,例如TCP/IP、NetBEUI、IPX等等,我们如何人为的将一个数据包给一个我们想给的指定协议。比如说是IPX包我们就不给TCP/IP、NetBEUI。由于我想加入自己的协议,所以不能指望系统来替我做。大家能不能说说现在的NDIS是怎么实现区分TCP/IP包和IPX包的,是NDIS把接到的所有包发给所有的协议,然后由协议决定是否丢掉,是吗?因为不是改协议的包在校验时一定会被丢掉的。但是这样是不是效率太低了,还是另有方法?
请高手指教!!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-11-14 09:25
我的理解是 因为NDIS是与协议层无关的,所以他不会判断一个报文的类型的,他管理的NDIS_PACKET,如果他判断报文类型然后在决定交给那个协议驱动的话,NDIS就和协议具有相关性了,如果你自己定了一种协议类型,不是他能识别的,NDIS不就无法工作了么?在中间层你可以收到所有的包,跑一下passthru就看到了,必须要协议层判断报文的类型,决定收还是不收。
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
right_wind
驱动中牛
驱动中牛
  • 注册日期2001-10-12
  • 最后登录2018-05-29
  • 粉丝1
  • 关注0
  • 积分60分
  • 威望66点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2002-11-14 09:44
ddk中将各个层的工作写的很清楚,miniport管收发报文,protocol处理报文,楼上说的没错,需要protocol自己处理miniport提交的报文。
good good study, day day up。
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
地板#
发布于:2002-11-14 10:31
前面几位说得都没有错,确实如此,你看看很多抓包的工具就是如此,通过注册一个协议,得到所有包。
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-14 10:53
fracker,最近忙什么呢??
我的hook现在如果在向协议层发包的函数那里下个断点,就可以跑通了,如果不下断点,就死翘了,我在对链表操作的地方加上了NdisAcquireSpinLock和NdisReleaseSpinLock,不过没有起作用,还是翘了,郁闷。page fault的内存错误应该是由同步引起的,你有什么建议没有?
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-11-14 11:49
那就是说他是将所有包发给所有协议驱动是吗??
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
6楼#
发布于:2002-11-14 11:51
fracker,最近忙什么呢??
我的hook现在如果在向协议层发包的函数那里下个断点,就可以跑通了,如果不下断点,就死翘了,我在对链表操作的地方加上了NdisAcquireSpinLock和NdisReleaseSpinLock,不过没有起作用,还是翘了,郁闷。page fault的内存错误应该是由同步引起的,你有什么建议没有?

最近比较清闲,内存错误也有可能是引用无效内存,用softice跟踪一下能看到是那一句吧?
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-11-14 11:53
ddk中将各个层的工作写的很清楚,miniport管收发报文,protocol处理报文,楼上说的没错,需要protocol自己处理miniport提交的报文。



这个我也知道,可是NDIS是怎么处理NetBEUI和TCP/IP包的?就是说他是不是把NetBEUI的包同样发给了TCP/IP软件包!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-11-14 11:54
fracker!你的看法是??
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
9楼#
发布于:2002-11-14 11:55
那就是说他是将所有包发给所有协议驱动是吗??

我认为是这样。
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-11-14 11:56
我觉得有问题!那样效率有问题呀!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-11-14 11:58
不过NDIS确实应该做成这样!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-11-14 11:59
那我要加入自己的协议就很简单了!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
magicx
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2014-08-18
  • 粉丝1
  • 关注0
  • 积分-14分
  • 威望13点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-11-14 12:02
不过NDIS确实应该做成这样!


这里好象还有一个你的协议驱动是否有设置为混杂模式的问题。
[color=red]大头鬼! :P[/color]
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-11-14 12:03
这里好象还有一个你的协议驱动是否有设置为混杂模式的问题。


协议驱动也有混杂模式吗??
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-11-14 12:05
fracker!再问一个问题,Protocol driver把包给谁了?TDI是吗??
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
magicx
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2014-08-18
  • 粉丝1
  • 关注0
  • 积分-14分
  • 威望13点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-11-14 12:06
那我要加入自己的协议就很简单了!


ndis不关心你的协议,他只是历遍协议链
[color=red]大头鬼! :P[/color]
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-11-14 12:09
给分!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
msystem
驱动牛犊
驱动牛犊
  • 注册日期2002-11-11
  • 最后登录2003-03-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-11-14 12:44
高手还没来你就把分给光了,唉!
寻找IT的新动力!
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2002-11-14 12:59
单步就不出错了,而且在调用栈里看不到函数调用信息
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
游客

返回顶部