佚名通过本文主要向大家介绍了数据持久层,数据链路层,数据链路层协议,数据链路层的主要功能,数据访问层等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: NDIS60 lwf驱动,过滤修改数据后应用层无法收到数据
描述:
代码大概流程。
1.复制收到这个包的内容。
2.调用NDIS_SET_RETURN_FLAG(ReturnFlags, NDIS_RETURN_FLAGS_DISPATCH_LEVEL);
NdisFReturnNetBufferLists(pFilter->FilterHandle, NetBufferLists, ReturnFlags);
3.修改复制包中内容的数据和校验和。
4.以这个新的数据新建一个NBL。
5.调用NdisFIndicateReceiveNetBufferLists
6.在FilterReturnNetBufferLists中拦截销毁自己定义的NBL。
这个流程有问题吗?
描述:
NDISlwf驱动开发过滤数据
使用NIDS6.0 lwf驱动在Win7上测试,目前遇到的问题是,主机A向主机B发送一个UDP包,主机B上的lwf驱动收到这个包后修改这个包的数据内容,如发的aaa就改为bbb,然后再重新计算UDP校验和,数据的长度不变。这样做后应用层收不到改过之后包,但是如果不修改,只是复制一个NBL再发送这个复制的NBL,上层就可以收到,有哪位高手知道是什么原因吗?代码大概流程。
1.复制收到这个包的内容。
2.调用NDIS_SET_RETURN_FLAG(ReturnFlags, NDIS_RETURN_FLAGS_DISPATCH_LEVEL);
NdisFReturnNetBufferLists(pFilter->FilterHandle, NetBufferLists, ReturnFlags);
3.修改复制包中内容的数据和校验和。
4.以这个新的数据新建一个NBL。
5.调用NdisFIndicateReceiveNetBufferLists
6.在FilterReturnNetBufferLists中拦截销毁自己定义的NBL。
这个流程有问题吗?