zlr1975113
驱动牛犊
驱动牛犊
  • 注册日期2008-04-21
  • 最后登录2013-01-07
  • 粉丝1
  • 关注0
  • 积分11分
  • 威望35点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1821回复:3

NDIS中间层驱动中怎么发报文给本机?

楼主#
更多 发布于:2012-12-23 17:54
我已经有了一个可以过滤出站和入站全部报文的NDIS中间层驱动,现在我需要在这个驱动中发个自己组建的报文给本机的某个端口。我先试了把这个自组报文的源IP、目的IP、源MAC、目的MAC都设置为本机的,TCP端口也相应设置,然后调用NdisSend发送(对PtSendComplete也进行了相应处理),结果这个驱动的过滤接收的函数并没报告收到了这个报文。然后我又试了不经过发送,直接调用NdisMIndicateReceivePacket试图叫上层接收,结果蓝屏。我想请教这两种方案哪个可行?应该怎么做才正确?我确认报文的各种头部都是正确的。至于SEQ和ACK,简单起见,我是用SYN报文做的实验。我是在局域网内。
zlr1975113
驱动牛犊
驱动牛犊
  • 注册日期2008-04-21
  • 最后登录2013-01-07
  • 粉丝1
  • 关注0
  • 积分11分
  • 威望35点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2012-12-25 12:10
回 zhangfresh 的帖子
zhangfresh:用NdisMIndicateReceivePacket比较简单。
如果用NdisSend的话,必须保证那个网卡驱动够回传报文。具体规则我还不清楚,以前有个同事,他在中间层模拟发送一个保证,不希望报文往回传,但它反而会往协议层传。
这是我以前写的一个虚拟网卡驱动,收到writefile信息之后,往协议层传 .. (2012-12-24 11:06)

谢谢!
游客

返回顶部