2

背景:我需要创建一个 NDIS 过滤器中间驱动程序。该驱动程序将在收集元数据(主要是时间信息)时传递所有流量。驱动程序将通过插入包含元数据的自己的数据包并将它们向上传递到堆栈来将此信息导出到用户应用程序。

我的问题是关于 NDIS 版本的。最终,我将不得不为 Windows XP 和 7 编写一个驱动程序。然而,目前,我将只实现其中一个作为概念证明/原型。我知道在 NDIS 6 中,他们将过滤器功能从通用中间驱动程序中拆分为单独的驱动程序类型(轻量级过滤器),以简化过滤器驱动程序的创建。Microsoft 在 DDK 中为 NDIS 5 和 6 提供了直通过滤器驱动程序的示例。我一直在查看这些示例,并且 NDIS 6 LWF 看起来稍微简单一些(尽管我承认,我对 Windows 驱动程序开发还是新手)。

在所有其他条件相同的情况下,最好先支持 Win XP(更大的安装基础,更容易访问测试机器等)。但是,如果 NDIS 6 轻量级过滤器可以使开发更快/更容易,我最好先实现 Win 7 驱动程序。

简而言之:根据您的经验,与 NDIS 5 相比,NDIS 6 是否显着简化了过滤器驱动程序的开发?

感谢您的任何意见。

4

2 回答 2

3

如果你只是想修改 WDK 示例驱动程序,那么也许 NDIS 5 IM 并没有太多的工作。我不熟悉 NDIS 6 LWF 驱动程序,因此无法发表评论。

或者,使用WinDivertWinPktFilter等用户模式包来创建概念验证原型。这可能比驱动程序开发更容易。 披露:我创作了 WinDivert

于 2012-01-06T05:47:37.200 回答
1

是的,从实现方面来看,NDIS 6.0 过滤器驱动程序比 NDIS 5.x IM 驱动程序更容易,但并不多。

主要区别在于钩子接口和数据封装:NDIS_PACKET 与 NET_BUFFER_LIST。但是将它们转换为您的私有网络数据描述符并不难。您可以将 WDK 示例代码(passthru 和 filter)用于 hook 部分,然后设计您的内部通用接口来处理 IM 和 LWF 驱动程序的专用网络数据描述符。

于 2012-01-12T10:57:54.353 回答