阅读:1523回复:19
请问在NDIS中怎么将包发给指定的协议驱动?
如题!我们知道在协议栈中有很多的协议,例如TCP/IP、NetBEUI、IPX等等,我们如何人为的将一个数据包给一个我们想给的指定协议。比如说是IPX包我们就不给TCP/IP、NetBEUI。由于我想加入自己的协议,所以不能指望系统来替我做。大家能不能说说现在的NDIS是怎么实现区分TCP/IP包和IPX包的,是NDIS把接到的所有包发给所有的协议,然后由协议决定是否丢掉,是吗?因为不是改协议的包在校验时一定会被丢掉的。但是这样是不是效率太低了,还是另有方法?
请高手指教!! |
|
|
沙发#
发布于:2002-11-14 12:59
单步就不出错了,而且在调用栈里看不到函数调用信息
|
|
|
板凳#
发布于:2002-11-14 12:44
高手还没来你就把分给光了,唉!
|
|
|
地板#
发布于:2002-11-14 12:09
给分!
|
|
|
地下室#
发布于:2002-11-14 12:06
那我要加入自己的协议就很简单了! ndis不关心你的协议,他只是历遍协议链 |
|
|
5楼#
发布于:2002-11-14 12:05
fracker!再问一个问题,Protocol driver把包给谁了?TDI是吗??
|
|
|
6楼#
发布于:2002-11-14 12:03
这里好象还有一个你的协议驱动是否有设置为混杂模式的问题。
协议驱动也有混杂模式吗?? |
|
|
7楼#
发布于:2002-11-14 12:02
不过NDIS确实应该做成这样! 这里好象还有一个你的协议驱动是否有设置为混杂模式的问题。 |
|
|
8楼#
发布于:2002-11-14 11:59
那我要加入自己的协议就很简单了!
|
|
|
9楼#
发布于:2002-11-14 11:58
不过NDIS确实应该做成这样!
|
|
|
10楼#
发布于:2002-11-14 11:56
我觉得有问题!那样效率有问题呀!
|
|
|
11楼#
发布于:2002-11-14 11:55
那就是说他是将所有包发给所有协议驱动是吗?? 我认为是这样。 |
|
12楼#
发布于:2002-11-14 11:54
fracker!你的看法是??
|
|
|
13楼#
发布于:2002-11-14 11:53
ddk中将各个层的工作写的很清楚,miniport管收发报文,protocol处理报文,楼上说的没错,需要protocol自己处理miniport提交的报文。
这个我也知道,可是NDIS是怎么处理NetBEUI和TCP/IP包的?就是说他是不是把NetBEUI的包同样发给了TCP/IP软件包! |
|
|
14楼#
发布于:2002-11-14 11:51
fracker,最近忙什么呢?? 最近比较清闲,内存错误也有可能是引用无效内存,用softice跟踪一下能看到是那一句吧? |
|
15楼#
发布于:2002-11-14 11:49
那就是说他是将所有包发给所有协议驱动是吗??
|
|
|
16楼#
发布于:2002-11-14 10:53
fracker,最近忙什么呢??
我的hook现在如果在向协议层发包的函数那里下个断点,就可以跑通了,如果不下断点,就死翘了,我在对链表操作的地方加上了NdisAcquireSpinLock和NdisReleaseSpinLock,不过没有起作用,还是翘了,郁闷。page fault的内存错误应该是由同步引起的,你有什么建议没有? |
|
|
17楼#
发布于:2002-11-14 10:31
前面几位说得都没有错,确实如此,你看看很多抓包的工具就是如此,通过注册一个协议,得到所有包。
|
|
18楼#
发布于:2002-11-14 09:44
ddk中将各个层的工作写的很清楚,miniport管收发报文,protocol处理报文,楼上说的没错,需要protocol自己处理miniport提交的报文。
|
|
|
19楼#
发布于:2002-11-14 09:25
我的理解是 因为NDIS是与协议层无关的,所以他不会判断一个报文的类型的,他管理的NDIS_PACKET,如果他判断报文类型然后在决定交给那个协议驱动的话,NDIS就和协议具有相关性了,如果你自己定了一种协议类型,不是他能识别的,NDIS不就无法工作了么?在中间层你可以收到所有的包,跑一下passthru就看到了,必须要协议层判断报文的类型,决定收还是不收。
|
|
|