hoyizo
驱动牛犊
驱动牛犊
  • 注册日期2003-12-26
  • 最后登录2004-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2062回复:13

请问如何在passthru下的PtReceive里面drop掉一个包

楼主#
更多 发布于:2003-12-28 17:10
因为初学,小弟天真的以为只要去掉Packet = NdisGetReceivedPacket(pAdapt->BindingHandle, MacReceiveContext);以后的所有东西(因为我想把报文拿出来再drop)就可以阻止包的发送,但是每次都蓝屏。百思不得其解,还请高人指点。

还有小弟查询过去的帖子,有人说把LookAheadBuffer里面的数值全部改成FF,就可以断开这一个包。但小弟不清楚他的格式,到底要怎样才能把它的值都改成FF?

问题也许很傻,但对小弟来说意义重大,老大们千万不要不屑回答啊,多谢

最新喜欢:

xiaojian521xiaoji...
dkingfirst
驱动牛犊
驱动牛犊
  • 注册日期2003-12-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-12-28 19:24
很简单的, 不向上Indicate 然后 return NDIS_STATUS_NOT_ACCEPTED;
xiongcs
驱动牛犊
驱动牛犊
  • 注册日期2003-12-17
  • 最后登录2004-03-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-12-28 22:50
楼上说的对!
hoyizo
驱动牛犊
驱动牛犊
  • 注册日期2003-12-26
  • 最后登录2004-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-12-29 03:00
dkingfirst 大哥说得对
hoyizo
驱动牛犊
驱动牛犊
  • 注册日期2003-12-26
  • 最后登录2004-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-12-29 03:03
蓝屏的原因其实是我抓包的code的问题
chudd
驱动牛犊
驱动牛犊
  • 注册日期2003-07-02
  • 最后登录2010-09-21
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望20点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-12-29 16:32
不知你有没有遇到这种情况:NdisGetReceivedPacket()返回NULL,这时该如何得到这个包的数据呀?
能否把你的代码共享一下?

[编辑 -  12/29/03 by  chudd]
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2003-12-29 16:52
不知你有没有遇到这种情况:NdisGetReceivedPacket()返回NULL,这时该如何得到这个包的数据呀?
能否把你的代码共享一下?

[编辑 -  12/29/03 by  chudd]

有不少老帖子讲了的,请翻翻hu版的帖子。
ljjlovernet
驱动小牛
驱动小牛
  • 注册日期2003-10-10
  • 最后登录2004-12-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-12-29 17:07
在你想drop的地方,让状态返回NDIS_STATUS_NOT_ACCEPT行不行呢?
我是来学习的。不打扫卫生
hoyizo
驱动牛犊
驱动牛犊
  • 注册日期2003-12-26
  • 最后登录2004-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-12-29 18:06
根据我这几天的经验,Packet=NdisGetReceivedPacket()是必然返回NULL的,至少在xp中。所以我们根本不care在 if (Packet != NULL){}里面的东西,因为肯定不会用到,原因我不知道。

如果要drop一个包,在 pAdapt->IndicateRcvComplete = TRUE;这句前面加

Status = NDIS_STATUS_FAILURE;
           break;

这样所有的包都掉了,所以要防火的话,用个if{}框起来。

我不知道放Status = NDIS_STATUS_NOT_ACCEPTED;可不可以,我的好像不行。break是跳过后面的语句(好像这才是真正发包的语句〕,因为PtReceive原本是一个Do While的格式.
hoyizo
驱动牛犊
驱动牛犊
  • 注册日期2003-12-26
  • 最后登录2004-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-12-29 18:15
不知你有没有遇到这种情况:NdisGetReceivedPacket()返回NULL,这时该如何得到这个包的数据呀?
能否把你的代码共享一下?

[编辑 -  12/29/03 by  chudd]


老大不屑于讲的我来分享一下我的微薄经验。

我用来抓包文的code也是从Packet里面抓,结果每次都蓝屏,因为Packet根本就是空的。

听说包头在HeaderBuffer里面,内容在LookAheadBuffer里面,我不知道对不对,也不知道怎么拿出来。还请老大们赐教啊
cloudycro
驱动牛犊
驱动牛犊
  • 注册日期2003-12-02
  • 最后登录2006-02-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-12-30 13:30
我看到从前的贴子,讨论的特别多,关于这个NdisGetReceivedPacket是不是返回null的问题,适合网卡有关系的,我的网卡realtek RTL8139就是不返回null的,所以我的过滤部分的程序就放在if(packet!=null)里啦!和网卡有关系的话,我觉得是不是为了通用,都应该放一份过滤的哪?!
 :D
cloudycro
驱动牛犊
驱动牛犊
  • 注册日期2003-12-02
  • 最后登录2006-02-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-12-30 13:32
还有,以太网的包头是放在HeaderBuffer里面的,取出来判断就行了,LookaheadBuffer是数据内容,就是从IP包头开始的数据的内容。 :D
hoyizo
驱动牛犊
驱动牛犊
  • 注册日期2003-12-26
  • 最后登录2004-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-12-30 14:44
我用
DbgPrint(\" HeaderBuffer: %u\\n\", HeaderBuffer);
DbgPrint(\" HeaderBufferSize: %u\\n\", HeaderBufferSize);

打印,再drivermonitor里面看到的却是类似
-17.475   Default     HeaderBuffer: 4286049008
-17.475   Default     HeaderBufferSize: 14

的东东, 这里打印出来的应该是pointer本身,但是如果我要拿出pointer所指的内容要怎么办?PVOID定义的pointer要怎么样用?

我用 (char *)HeaderBuffer 强行改格式,结果蓝屏。请老大们告知正确使用方法
cloudycro
驱动牛犊
驱动牛犊
  • 注册日期2003-12-02
  • 最后登录2006-02-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-12-31 10:41
NdisMoveMemory(&EthHeader,HeaderBuffer,sizeof(ETHHDR));


是说打出来以太网报头么?你那是什么意思呢? :(
游客

返回顶部