阅读:3061回复:33
关于ProtocolReceive!急救!!!!
本人想对在ProtocolReceive中收到的数据进行处理。可是当数据不全时,要调用NdisTransferData函数来接收其实的数据(DDK文档上说得)。可是看DDK的例子,它是在MiniPortTransferData中调用的。请大侠们给解释一下。还有我在什么地方处理数据(比如解压)什么时候释放资源!谢谢!!!
|
|
最新喜欢:txysp |
沙发#
发布于:2003-03-11 14:53
本人想对在ProtocolReceive中收到的数据进行处理。可是当数据不全时,要调用NdisTransferData函数来接收其实的数据(DDK文档上说得)。可是看DDK的例子,它是在MiniPortTransferData中调用的。请大侠们给解释一下。还有我在什么地方处理数据(比如解压)什么时候释放资源!谢谢!!! 我刚刚在一个帖子里做了些解释,去看看吧,就怕有说错的地方。 http://www.driverdevelop.com/forum/html_36170.html?1047365499 |
|
|
板凳#
发布于:2003-03-11 16:57
收 件 箱 我这几次一上来就看到这些东西,是不是你老兄给我发什么东西了?可除了看见的这点东西之外,什么都翻不出来了,我左点右点前点后点上点下点鼠标都快点坏了也点不出什么新东西来。 突然发现,现在才2003年3月11日17时不到,怎么老兄你发送上面<没有标题>的日期已经是3月12日凌晨了?让我算算看,你呆的地方比北京时间早了8个小时,莫非老兄你在大不列颠? [编辑 - 3/14/03 by SharpShooter] |
|
|
地板#
发布于:2003-03-12 11:10
不会吧!
我是问你一些问题了!怎么看不见呢?? 问题是,按你所说:在protocolreceivecomplete中向上指示数据(NdisMindicateReceivePacket)。可是我这里调用总是不成功! 是不是得设置一下packet的什么属性呀?还有,在调用 NdisTransferData之前,我的包怎么分配缓冲区描述符(MDL) 你有这方面的例子吗?如果有给我一份好吗?bluesas007@sina.com 我把我的115分都给你。 谢谢!!!! |
|
地下室#
发布于:2003-03-12 16:43
不会吧! 调用不成功?不会的,你确认参数给对了吗?如果你收到的不是整包的话,你需要调用NdisAllocatePacket分配Packet描述符,然后把你调用NdisAllocateBuffer分配的MDL挂上去,NdisMIndicateReceivePacket的第二个参数就是Packet描述符的指针。好像NdisTransferData没有参数需要填MDL吧?看仔细了。这方面的例子就是Passthru,里面各种调用的情况都有,够你用了。 |
|
|
5楼#
发布于:2003-03-13 11:34
我觉得问题不大,这是你代码的Copy吗?如果是的话,你返回的值不对,NTSTATUS 0表示成功,1就是失败了。
|
|
|
6楼#
发布于:2003-03-13 13:11
当返回0时,我在ProtocolReceive中设置Status = NDIS_STATUS_FAILURE 反之为 NDIS_STATUS_SUCCESS
这个没有多大的关系。 可是,当NdisMindicatePacket()后检查pMyPakcet 的状态总是NDIS_STATUS_PENDING 而且,MiniPortTransDataComplete()和MiniPortReturnPakcet()都没有反映。 如果 不调用NDIS_SET_PACKET_STATUS(pMyPacket, NDIS_STATUS_RESOURCES),MiniPortReturnPakcet() 会有反映,MiniPortTransDataComplete()没有,而且在MiniPortReturnPakcet() 检查pMyPacket的状态是NDIS_STATUS_PENDING 哎,实在是没有办法了。就是搞不通。这可怎么办。头还让我这个星期出东东呢!大家救救我吧! :( :( :( :( :( :mad: :mad: |
|
7楼#
发布于:2003-03-13 15:54
当返回0时,我在ProtocolReceive中设置Status = NDIS_STATUS_FAILURE 反之为 NDIS_STATUS_SUCCESS 那我就搞不清了,你还是拿Passthru慢慢改吧,先把它的接收时直接向上递的做法改成整包向上递,通了的话,再做别的处理吧。或者你先把你对包的处理部分都砍掉,往来的包看一眼就往上送、往外发,拿两台机器调调看发出来没有,也可以拿Sniffer看看上层收到没有。 |
|
|
8楼#
发布于:2003-03-13 16:16
我怎么给不了分了!
哎!没有办法呀。我把所有的处理都去掉了。可是还是不行! 就是向上传递不通。向外发送没有问题了! 谢谢了! 真是郁闷呀! :( :( :( :( |
|
9楼#
发布于:2003-03-13 16:39
没有办法了,还是没有反映!你帮我看一下我的代码:这是在ProtocolReceive中实现的: 粗看了一下你的代码,没太大的问题。 可能的原因你有没有NdisMEthIndicateReceiveComplete,告知上层一个接收结束? |
|
|
10楼#
发布于:2003-03-13 16:40
没有办法了,还是没有反映!你帮我看一下我的代码:这是在ProtocolReceive中实现的: 粗看了一下你的代码,没太大的问题。 可能的原因你有没有NdisMEthIndicateReceiveComplete,告知上层一个接收结束? |
|
|
11楼#
发布于:2003-03-13 16:44
我觉得没有这个必要吧!我试试!等一会!!
谢谢!!!! :) :) :) |
|
12楼#
发布于:2003-03-13 16:56
不行呀!
你看我这样调用可以吗? NdisMIndicateReceivePacket(pAdapt->MiniportHandle, &pMyPacket, 1); NdisMEthIndicateReceiveComplete(pAdapt->MiniportHandle); 你有这方面的例程吗? 谢谢!!! :D :D :D :D |
|
13楼#
发布于:2003-03-13 16:58
非常的必要
[编辑 - 3/13/03 by mikeluo] |
|
|
14楼#
发布于:2003-03-13 16:58
我觉得没有这个必要吧!我试试!等一会!! 非常的有必要,看DDK文档。 |
|
|
15楼#
发布于:2003-03-13 17:02
我调用的是NdisMIndicateReceivePacket()
上层应该收到得是一个整包呀! 不用调用NdisMIndicateReceivePacket吧! 我也只是猜测! 你作过用NdisMIndicateReceivePacket()向上传包吗? 有的话,把你这块代码给我看看好吗? 我把我所有的分都给你。 如果的话,请你吃饭了! 请大家都帮我看看好吗? 菜鸟在此谢谢了!!! :mad: :mad: |
|
16楼#
发布于:2003-03-13 17:10
看一下NdisMEthIndicateReceiveComplete的说明,
ddk里面的 |
|
|
17楼#
发布于:2003-03-13 17:23
按你所说,我调用了。
可是还是不行!!! 这可怎么办?????????????? |
|
|
18楼#
发布于:2003-03-13 17:37
你调用ndistransferdata,怎么处理的ndistransferdatacomplete?
为什么在receivpcomplete里面向上交包? |
|
|
19楼#
发布于:2003-03-13 17:48
调用NdisTransferData后,MiniPortTransDataComplete就没有响应过。(我保持原来的Passthru的部分没有动!)
看ddk文档上说,就好在此处处理数据,所以在处理完后,再向上批示数据。 SharpShooter也这么说得。而且我调用ndistransferdata后,MiniPortTransferDataComplete就没有响应过!我也不知为什么? 很郁闷呀!! 谢谢!!! :( :( |
|
上一页
下一页