gpt4 book ai didi

windows - NDIS 协议(protocol)驱动程序(WinPcap 的 npf.sys)是否可以移植到 LWF 或 WFP?

转载 作者:可可西里 更新时间:2023-11-01 14:44:01 26 4
gpt4 key购买 nike

大家。我正在为 WinPcap 做一些改进。现在我已经将 npf.sys 驱动程序从 NDIS5.0 移植到 NDIS6.0。这个驱动还有改进的空间吗,比如移植到LWF(Light-Weight Filter)或者WFP(Windows Filter Platform)?我们只是想确保使用更新更好的框架。

还有一些问题:

LWF好像是Vista时代的产物,现在微软已经不怎么提了,是这样吗?

LWF 或 WFP 驱动程序可以做 NDIS 协议(protocol)驱动程序可以做的事情吗?

LWF 或 WFP 与 WDF(Windows Driver Framework)有关系,还是同时兼容 WDF 和 WDM 框架?

如果移植可行,难度如何,我之前开发过一些NDIS中级驱动程序,LWF或WFP比这更难还是更容易?

谢谢!

最佳答案

祝贺您将 WinPcap 移植到 NDIS 6.x。我印象深刻。我希望你能说服上游接受你的改变:-)

关于 LWF

微软仍然非常支持 LWF。我们不怎么谈论它们,仅仅是因为对它们的兴趣有限。大多数人真的想在第 3 层或第 4 层工作,WFP 比 LWF 能更好地为他们提供服务。但是,低级数据包捕获工具包是 LWF 的优势的完美示例。

我们很高兴看到人们编写新的 LWF、WFP 标注、NDIS 微型端口或 NDIS 协议(protocol)。这些都是受支持的当前技术。 (假设 NDIS 6.x 用于微型端口和协议(protocol))。

比较 LWF、NDIS 协议(protocol)和 WFP 标注

LWF 几乎 NDIS 协议(protocol)驱动程序可以做的任何事情。有一些小的极端情况,但通常您会发现 LWF 很强大。

WFP 标注在不同的层运行,因此与 NDIS 协议(protocol)或 LWF 相比具有不同的优势和劣势。例如,WFP 标注不能与媒体连接状态、硬件卸载或电源管理交互。但与 NDIS LWF 不同的是,WFP 标注可以查看受 IPsec 保护的数据包的明文,查询最初发送数据包的用户/应用程序的身份,拦截环回 IP 流量,并授权创建套接字本身(在任何之前发送流量)。

您应该坐下来问问自己:“我真正对网络堆栈的哪一层感兴趣?”如果答案是第 2 层,则继续使用 NDIS 驱动程序。如果它是 IPv4/6 堆栈的第 3 层或第 4 层,那么您将需要 WFP 标注。 (有些人从 NDIS 驱动程序开始,因为他们最熟悉 NDIS,但后来遇到困难,因为他们实际上是在尝试解决 TCP 层的问题。)

将 WDF 与 NDIS 或 WFP 结合使用

WDF 在很大程度上与 NDIS 或 WFP 正交。您可以选择在 NDIS 驱动程序或 WFP 标注中使用 WDF 或 WDM 或两者的混合。 Microsoft、NDIS 团队和我正式鼓励您尽可能多地使用 WDF,因为它会节省您的时间并使您的驱动程序质量更高。

通常,如果您的 LWF 或 NDIS 协议(protocol)只是一个基本的“hello world”驱动程序,WDF 可以正常工作,但不会非常有用。 WDF 对与 NDIS 交互的驱动程序部分帮助不大。但是一旦您将 IOCTL 添加到用户模式(或任何其他非 NDIS 技巧),WDF 就可以为您节省大量时间和错误。

LWF 和 WFP 标注的困难

我认为您会发现 NDIS LWF 和 WFP 标注是一些最容易编写的网络驱动程序。 LWF 比 NDIS 协议(protocol)驱动程序更容易,并且比 NDIS IM 驱动程序容易。一个完整的 do-nothing LWF 驱动程序只有大约 20 行代码。 WFP 标注并不比 LWF 更难编写。

关于windows - NDIS 协议(protocol)驱动程序(WinPcap 的 npf.sys)是否可以移植到 LWF 或 WFP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18073119/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com