阅读:1446回复:6
关于packet的一点迷惑!
我对ddk的packet例子中,read部分有点不解 ,它在里面定义了自己的一个pPacket,在PacketRecieveIdicate中来保存来自网卡的数据,但是在完成例程以后,在PacketTransferDataComplete中就把自定义的包结构释放掉了 ,那么,如果我要对接收来的数据进行处理的话(比如修改以后再向上或者直接向下发送), 要在哪里开始处理呢? 希望大侠们能回答我,谢谢! ^_^ ^_^
|
|
沙发#
发布于:2003-05-17 11:24
关注!
我也想修改包再继续传输.现在正在看passthru.它可以实现.不指导packet怎么做,能不能做? |
|
板凳#
发布于:2003-05-19 11:30
我对ddk的packet例子中,read部分有点不解 ,它在里面定义了自己的一个pPacket,在PacketRecieveIdicate中来保存来自网卡的数据,但是在完成例程以后,在PacketTransferDataComplete中就把自定义的包结构释放掉了 ,那么,如果我要对接收来的数据进行处理的话(比如修改以后再向上或者直接向下发送), 要在哪里开始处理呢? 希望大侠们能回答我,谢谢! ^_^ ^_^ 前几个月曾经看过ddk的那个packet代码。它的receive的处理过程好像是这样的: 1、首先上层win32 app向packet driver发送一个read的irp,本驱动把它放在队列里边。 2、当该驱动receive一个packet以后,如果当前的read irp queue里边没有irp的话,就是放掉packet。如果有的话就把该packet返回给这个irp。 3、所以整个的处理过程都得需要win32 app的介入才能得到packet.如果win32一直都不call readfile,那么packet driver就一直丢弃packet。 以上仅是我个人的观点。仅供参考。我也很想知道正确的流程是什么。 |
|
地板#
发布于:2003-05-19 23:13
问题是,我现在想知道当数据通过NdisTransferData传到Packet
后,我在哪才能进行所收到包的判断和修改? 难道是在PacketTransferDataComplete函数中吗?? |
|
地下室#
发布于:2003-05-19 23:16
有人能提点一下吗? 没开窍呀,帮帮帮!
|
|
5楼#
发布于:2003-05-20 10:37
关注中!
|
|
|
6楼#
发布于:2003-05-20 13:55
问题是,我现在想知道当数据通过NdisTransferData传到Packet 不是PacketTransferDataComplete函数处理还能是别的函数吗? This is a required function unless the protocol binds itself exclusively to underlying NIC driver(s) that indicate packets with NdisMIndicateReceivePacket. ProtocolTransferDataComplete is called when a previous call to NdisTransferData returned NDIS_STATUS_PENDING and the remaining data has been copied into the protocol-supplied buffers chained to a given packet descriptor. 我觉得应该在这个函数里边对剩余的data进行处理。 |
|