【发布时间】:2014-05-25 03:27:39
【问题描述】:
我是 NDIS LWF 驱动程序的新手,但在确定 Win7 上的 WFP 无法满足我的要求后,我不得不转向它们。所以希望这不是一个太基本的问题。
我的要求基本上是能够在多 NIC 系统上的选定 NIC 上混杂地监听。我已经修改了 LWF 示例以将接口置于混杂模式,但我现在陷入了如何设置指定适配器的问题。我意识到 LWF 位于所有适配器之上,因此它不像我可以调用 NdisOpenAdapterEx 的协议,但我认为必须有一些过滤机制来忽略某些适配器。
我需要能够将我关心的接口的选定 MAC 地址 IOCTL 到驱动程序。是否可以加载驱动程序但仅在特定接口上运行过滤器,或者我只需要忽略来自其他人在 FilterReceiveNetBufferLists 中不关心的调用。如果我不对特定接口执行任何操作,似乎不必使用 FilterReceiveNetBufferLists 回调会更有效。
让我感到困惑的是,FilterRestart 在 DriverEntry 期间被自动调用(通过 NdisFRegisterFilterDriver),并且似乎没有 NdisFPauseFilter(但有一个 NdisFRestartFilter)。理想情况下,我希望能够在任何过滤开始之前设置必要的参数,并且我希望在 DriverEntry 期间不要使用注册表,因为我仍然需要能够根据需要动态重新分配任务。
最后,为了更好地理解 NDIS 内部结构,当过滤器模块暂停时,整个堆栈是否会暂停,或者 NDIS 是否围绕暂停的模块路由?
【问题讨论】:
标签: windows networking kernel driver ndis