ArthasPrince
驱动牛犊
驱动牛犊
  • 注册日期2011-01-02
  • 最后登录2011-01-02
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2115回复:1

NDIS6过滤驱动的编写

楼主#
更多 发布于:2011-01-02 23:24
NDIS6是在WINDOWS VISTA及之后版本的WINDOWS引入的,这时NDIS5的HOOK方式是无法使用的,MSDN推荐的方式是使用过滤驱动,其实也可以使用Intermediate(中间层驱动),下面谈一下它们的利弊,还有一些原理性的东西:
1.为什么NDIS6不动NDIS5的HOOK:

1.因为NDIS6使用了新的函数集和新的数据结构,最重要的是NET_BUFFER替代了NDIS_PACKET,原先所有的使用NDIS_PACKET的PROTOCOL或MINIPORT驱动的接口函数从此完全被报废。
其实对NDIS6也是可以进行HOOK的,但不稳定,通过对OPEN_BLOCK6等结构中的接口函数进行替换,可以对部分的协议驱动实现HOOK,注意:这几个函数都是使用新的NET_BUFFER结构来进行工作,其体函数名可以通过调试看出来,名称中包括List。有兴趣的人可以试一下,总的来说,这些函数与结构的变化比较大,很多工作方式都发生的变化,处理起来更加复杂。

2.IM驱动和过滤驱动相比,有什么利弊之分?
1.IM有最好的通用性,可以在WINXP,WIN2K,VISTA,WIN7中全面兼容,但它对VISTA与WIN7中的支持,是通过在通信函数中加入从NDIS_PACKET至NET_BUFFER转换层实现,所以性能在WIN7下应该是反而减弱了。
2.过滤驱动是直接使用NET_BUFFER来进行通信的,这种方式会有更好性能,主要的原因是NET_BUFFER使用了新的数据表示方法,避免的频繁的内存复制。具体可以参考MSDN。但很明显,它无法支持WINXP及之前的系统。
iihacker
论坛版主
论坛版主
  • 注册日期2010-01-07
  • 最后登录2017-08-16
  • 粉丝5
  • 关注8
  • 积分377分
  • 威望1941点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2011-01-09 10:32
支持一下
NDIS 1群74755180 NDIS 2群182802097 交换机软硬件技术群 187471475 FPGA PCI PCIE 群187471817
游客

返回顶部