所有人。我正在为WinPcap做一些改进。现在,我已经将npf.sys驱动程序从NDIS5.0移植到了NDIS6.0。这个驱动程序是否还有改进的空间,比如将它移植到LWF (轻量级过滤器)或WFP (Windows过滤器平台)?我们只想确保使用更新和更好的框架。
以下是其他一些问题:
LWF似乎是Vista时代的一款产品,现在微软很少提到它了,是吗?
LWF或WFP驱动程序可以做NDIS协议驱动程序所能做的事情吗?
LWF或WFP是否与WDF (Windows驱动程序框架)有关,还是与WDF和WDM框架兼容?
如果这是可行的移植,困难如何,我已经开发了一些NDIS中间驱动程序,LWF或WFP更难或更容易吗?
谢谢!
发布于 2013-08-06 22:07:43
祝贺您将WinPcap移植到NDIS6.x。我被打动了。我希望你能说服上游采取你的改变:-)
关于LWF
LWF仍然很受微软的支持。我们很少谈论它们,仅仅是因为对它们的兴趣有限。大多数人真的想在第三层或第四层工作,在那里他们得到世界粮食计划署的更好的服务,而不是一个LWF。然而,一个低级别的包捕获工具包是LWF的一个很好的例子。
我们很高兴看到人们编写了新的LWF、WFP标注、NDIS微型端口或NDIS协议。这些都是支持的和最新的技术。(假设微型端口和协议为NDIS 6.x )。
比较LWF、NDIS协议和WFP标注
LWF几乎可以完成NDIS协议驱动程序所能做的任何事情。有一些小的角落情况,但通常你会发现,LWF是强大的。
世界粮食计划署的标注是在不同的层次上进行的,因此与NDIS协议或LWF相比,它们有着相当不同的优势和弱点。例如,WFP呼叫不能与媒体连接状态、硬件卸载或电源管理进行交互。但是,与NDIS不同,WFP呼叫可以窥探受IPsec保护的数据包的明文,查询最初发送数据包的用户/应用程序的身份,拦截回环IP通信,并授权创建套接字本身(在发送任何通信之前)。
你应该坐下来问问自己:“我真正感兴趣的是哪一层的网络堆栈?”如果答案是第二层,那么继续使用NDIS驱动程序。如果它是IPv4 4/6堆栈的第3层或第4层,那么您需要一个WFP调用。(有些人从NDIS驱动程序开始,因为他们最熟悉NDIS,但却遇到了困难,因为他们实际上是在试图解决TCP层的问题。)
在NDIS或WFP中使用WDF
WDF在很大程度上与NDIS或WFP正交。您可以选择在NDIS驱动程序或WFP标注中使用WDF或WDM或两者混合使用。微软,NDIS团队和我正式鼓励您尽可能多地使用WDF,因为这将节省您的时间,并使您的驱动程序更高质量。
通常,如果您的LWF或NDIS协议只是一个基本的"hello world“驱动程序,那么WDF会工作得很好,但不会非常有用。WDF对驱动程序中与NDIS交互的部分没有多大帮助。但是,一旦您将IOCTL添加到用户模式(或任何其他非NDIS技巧),WDF就可以节省大量的时间和bug。
LWF和WFP的困难
我认为您会发现NDIS、LWF和WFP呼叫是最容易编写的网络驱动程序之一。LWF比NDIS协议驱动程序容易,比NDIS驱动程序容易得多。一个完整的无所事事的LWF驱动程序只有大约20行代码.世界粮食计划署的呼号写起来并不比写LWF更难。
https://stackoverflow.com/questions/18073119
复制相似问题