求助,NDISUIO怎么收包

joe88   2009-8-24 09:07 楼主
我用NDISUIO实现了发包,帧类型是0X6806的特殊包,用抓包软件能够看到包已经发出。
但是我开发板和主机联网的时候,如果是单播的话,能够收到,我这收到的意思是,任务栏里的那个连接的“收到”加1了。
但是我的程序没有收到这个报文。我曾经记得,我发帖问发包的时候,有个人说过,可能网卡会过滤掉我这个帧类型不是已经知晓的类型的帧。我现在的这种状态是不是就是这样的情况?

是不是数据包收到,但是没有上传到上层。


另,我直接使用NDIS的NDISUIO这个例子,发现收包不了,我GOOGLE了一下,有人说这个除非改驱动,否则就是可以发,不能收。不知道高手们谁有这样的做好的收包发包的例子,能不能给个参考?

谢谢各位~

回复评论 (17)

不懂这些
爱莫能助
点赞  2009-8-25 00:36
谢谢帮顶~
点赞  2009-8-25 09:35
我自己顶一下。。。
点赞  2009-8-25 14:58
每天顶一下,期待有人会帮我·
点赞  2009-8-26 10:20
请问lz,你的NDISUIO是手动加载,还是自动加载,要是手动加载的话如何确定协议绑定到了网卡驱动上?
另外还有个问题,我在PB上编译NDISUIO的时候,PB不支持函数
RtlInitUnicodeString(
        &usAdapterName,
        wszIntfGuid);
请问LZ怎么解决的,谢谢!!
点赞  2009-9-7 22:34
5楼的兄弟,我是新手。做嵌入式时间不上。我没那么多复杂的设定。
我的开发板用CE5.0,他自带了NDISUIO驱动,应该说,是他自动加载了。
我现在使用时,就直接用CreateFile,ReadFile,WriteFile,DeviceIoControl这些函数去控制他的读写。
基本也能控制它做读写操作。。。

我现在只能写,不能读。。最近被老板转到其他的项目了。所以暂时也没研究这个了。
点赞  2009-9-8 09:21
关注,帮顶
点赞  2009-9-8 10:51
回6楼老兄,谢谢你的关注,我也是这俩天才开始看NDISUIO,NDISUIO里面要加载流驱动跟DriverEntry,流驱动加载倒是没问题,但是DriverEntry的加载还没看明白,真希望那位大牛出来指导一下,赶时间呢,呵呵
点赞  2009-9-8 11:06
帮顶
点赞  2009-9-8 19:27
回8楼兄弟,你现在在做驱动开发的?
如果只是要用NDISUIO收发自己的包,估计我们可以交流一下。。
点赞  2009-9-9 16:51
回楼上的老兄,我现在是在做WIN CE驱动开发,这几天有事,没看到你的回复,现在手动加载基本算是完成了,就是在测试的部分遇到了个问题,在调用DeviceIoControl()函数的时候,参数IOCTL_NDISUIO_QUERY_BINDING,既然出现了问题,我已经根据MSDN上面所说添加了头文件nuiouser.h,但是编译的时候提示说没有定义IOCTL_NDISUIO_QUERY_BINDING,不晓得那里出问题了?我主要弄得是中间驱动抓包,也是最近才开始弄这个,很多东西都在摸索,很吃力,要是可以的话很乐意跟你交流!
点赞  2009-9-15 10:13
补充说明一下,我用的EVC 4.0
点赞  2009-9-15 10:16
1 使用GENERIC_READ|GENERIC_WRITE标志打开UIO设备。
2 使用IOCTL_NDISUIO_OPEN_DEVICE打开想要的网卡。
3 使用IOCTL_NDISUIO_SET_ETHER_TYPE设置要接收的帧类型。IP帧是0x0800(需要转换成网络字节顺序)
4 使用ReadFile()读收到的帧。
5 使用WriteFile()发送帧。
点赞  2009-9-17 01:49
谢楼上,总结的很好,很有用!
点赞  2009-9-17 16:16
Mark
点赞  2009-9-17 19:58
这个问题解决了嘛?二位?
点赞  2009-12-16 10:01
这个项目没弄了。。。。不过按13楼的方法,应该行吧。。。

我反正现在是能发不能收。。。。等以后有空再重新回来看看。。。
点赞  2009-12-17 16:37
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复