阅读:1688回复:7
MpSend中怎么通知上层收一个数据包?我快哭了。。。
兰屏无数次以后,我哭了。。。
MpSend中遇到特定的包(如ARP)包,不再发出,而是构造一个相应的ARP Reply递交给上层。 我按照下面的方法做: 1。NdisSend注释掉,然后返回给函数一个成功值,让系统以为包已经发出,从而释放掉内存。 就是把MyPacket的状态设置为NDIS_STATUS_SUCCESS,然后释放掉,这样做可以么? 2。用NdisMIndicateReceive通知上层接收自己组建的数据包。此时 这个NdisMIndicateReceive的第一个参数应该怎么写? 3。调用NdisMIndicateReceive如果返回不是Pending,,可以直接释放掉自己组建包用的内存。如果返回的是Pending,是不是要在ReturnPacket中释放内存呢?如何释放呢? 我真是一点办法都没有了,好迷茫。。。:(:(:(:(:(:(:(:( |
|
沙发#
发布于:2003-04-25 09:30
1首先,你告诉协议层让他释放的packet是有协议层分配的,那个mypacket是你分配的,怎么可以让协议层去释放??
2第一个参数就用adapter里面的miniporthandle 3用ndis的函数释放 ,ndisfreeXXXXXXX |
|
|
板凳#
发布于:2003-04-25 10:23
第一个问题现在已经解决了。
我想第二个问题也没有多大挑战性。 第三个,我的意思是说既然我调用了NdisMIndicateReceive,那么我的数据报会有各个状态,不是pending的时候怎么办?是pending的时候怎么办?ndisfree***是肯定要用的,不过应该怎么用呢?请大侠明示。 |
|
地板#
发布于:2003-04-25 12:58
NdisMIndicateReceive的话会有receivecomplete,在那里面释放内存。
|
|
|
地下室#
发布于:2003-04-25 17:38
这些都是知道的,能不能详细些说呢?最好结合一点代码。
[编辑 - 4/25/03 by ruberman] |
|
5楼#
发布于:2003-04-25 18:00
我想既然自己组建了一个PACKET,就应该用IndicateReceivePacket吧。然后释放应该在ReturnPacket中释放。不知道理解对不对。
但是我不知道该怎么操作。哪位大侠能详细的说明白? |
|
6楼#
发布于:2003-04-26 08:38
to ruberman
我想你是对的 :) |
|
|
7楼#
发布于:2003-04-27 13:54
具体应该怎么做呢?现在我的笔记本已经被驱动折磨的不行了,郁闷。
mikeluo,我给你的邮箱发了邮件,收到否? |
|