windows7以上平台 NDISFilter 网卡过滤驱动开发

                                                                                         by fanxiushu 2019-01-16 转载或引用请注明原始作者

这里讨论的都是基于WIN7以上平台,NDIS 6.0以上版本的网络驱动。

做个驱动的目的,是因为很早之前,我使用 TDI 和 NDIS5.1 框架的passthru中间层驱动,实现的基于应用层的NAT程序,
之所以说是基于应用层,是把passthru所有网络通讯数据包转发到应用层来处理,
在应用层NAT程序实现了大量的代码来处理NAT功能,
以及针对程序限流(免得一些恶心的程序疯狂的占用上传带宽),监控程序流量等多种功能。
并且长期运行在我的电脑上,在很早的CSDN博客中,曾经断断续续的提到过NAT的开发过程,有兴趣可以去查看这些文章。
当时主要运行在WINXP和WIN7中,这没有什么问题。到了WIN10平台,虽然 TDI 依然可以使用,
但是基于NDIS5.1框架的中间层驱动已经无法安装和运行了。因此想着修改驱动,本来是打算整个用WFP框架替换的,
WFP既能解决以前使用TDI才能处理的应用进程和端口关联问题,又能获取到IP数据包进行NAT转发和拦截。
但是我大量应用层代码,都是基于以太网数据包进行的分析处理,改起来实在蛋疼,因此想到了NDISFilter,跟passthru非常接近。
只需修改驱动代码,甚至连应用层接口都可以不修改,直接能用。开发完成之后,证明这确实是个好的选择。

windows平台内核中关于网络通讯这部分,分层是清晰的࿰

  • 9
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
Filter Drivers主要包括以下特性:   1) 一个Filter Drivers实例叫Filter Module。Filter Module附加在一个适配器的微端口驱动上, 来自相同或不同Filter Drivers的多个Filter Module都可以被堆叠在一个网络适配器上   2) 在Filter Module被安装驱动栈时,之上的协议驱动和之下的微端口驱动都不需要提供额外的支持功能   3) 因为Filter Module不像中间层驱动(intermediate driver)那样提供一个虚拟的微口,也不与某个设备对象联结,所以在微端口适配器(miniport adapter)之上的Filter Module 功能相当于一个修过过版本的微端口适配器(miniport adapter)。(原文:Because filter drivers do not implement virtual miniports like an intermediate driver, filter drivers are not associated with a device object. A miniport adapter with overlying filter modules functions as a modified version of the miniport adapter.)   4) NDIS使用配置信息来到决定一个Filter Module附加到一个网络适配器栈上的顺序   5) 在不用拆除整驱动栈的情况下,NDIS可以动态的插入、删除Filter Module或进行重新配置   6) 当NDIS重起驱动栈的时候协议驱动可以获得在栈上的Filter Module列表   7) Filter Drivers可以过滤下层网络适配器上绝大部分的通信。Filter Module不联结某特定的绑定(Filter modules are not associated with any particular binding between overlying protocol drivers and the miniport adapter.)   8) Filter Drivers 可以选择为过滤服务也可以选择为分流的不过滤服务,选择为哪一种是可以动态配置的(Filter drivers can select the services that are filtered and can be bypassed for the services that are not filtered. The selection of the services that are bypassed and the services that are filtered can be reconfigured dynamically.)   9) NDIS 保证有效的上下文空间,也不就是说Filter Drivers不要需要通代码COPY缓冲区来获得上下文空间  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值