gpt4 book ai didi

c - 为什么我的 NDIS 筛选器驱动程序的 FilterReceiveNetBufferLists 处理程序未被调用?

转载 作者:行者123 更新时间:2023-11-30 15:46:38 28 4
gpt4 key购买 nike

大家。又是我,那个将 WinPcap 从 NDIS 6 协议(protocol)移植到 NDIS 6 过滤器的人:) 我遇到了一个 bug,困了我两天。是这样的:我安装了npf6x.sys驱动程序(原名为npf.sys)后,可以通过“net start npf”启动该服务。然后我打开了Wireshark。然后网络出现故障(托盘图标上有一个感叹号)。经过远程调试,我发现 FilterReceiveNetBufferLists 例程从未被调用。我相信 RX 链接在这里已损坏。然而,FilterSendNetBufferLists 被正常调用。我确定 FilterAttach 已成功调用,并且现在没有调用 FilterUnload 。所以过滤器模块应该仍在原位。但它无法在 RX 路径中工作。然后我点击Wireshark的“开始”按钮,意外地发现网络已经恢复了。然后我停止当前的捕获并单击“接口(interface)列表”,网络再次关闭。太奇怪了。

我没有在驱动程序运行过程中更改处理程序指针。我看来司机也没有被锁挡住。谁能告诉我是否有任何情况导致 NDIS 在运行期间不调用过滤器的 FilterReceiveNetBufferLists ?

还有没有任何官方文档解决如何从 NDIS 6 协议(protocol)移植到 NDIS 6 过滤器?我只找到了从 NDIS 5 移植到 NDIS 6 的文档。

谢谢。

最佳答案

我们没有关于 LWF->Protocol 的官方文档,因为这不是一个非常常见的转换。

很难说是什么原因导致网络瘫痪,因为原因可能有很多。最好的方法是使用内核调试器并开始使用 !ndiskd.miniport 进行分析。以下是网络出现故障时需要注意的事项的一般 list :

  • 微型端口是否处于正常状态?检查 !ndiskd.miniport 是否将 STATE 区域中的所有内容显示为绿色或正常。确保数据路径正常(被绕过)并且媒体连接状态为已连接。
  • 您的过滤器驱动程序是否已加载到您认为应该加载的位置?检查 !ndiskd.miniportBINDINGS 部分是否显示列出了您的过滤器。如果您使用的是新的 Windows 8.1 WDK,还请检查过滤器的绑定(bind)是否未“拒绝”。
  • 微型端口的接收筛选器是否允许通常的传入数据包集?检查 !ndiskd.miniport -filterdb 显示微型端口至少允许进入 DIRECTED 和 MULTICAST 流量。
  • 微型端口是否尝试指示流量?在 ndis!NdisMIndicateReceiveNetBufferLists 上设置断点,并验证断点是否频繁命中,因为 NIC 将接收到的数据包发送给操作系统。
  • TCPIP 是否正在尝试发送流量?如果 TCPIP 不发送流量,则不会收到任何回复。在 ndis!NdisSendNetBufferLists 上设置断点以查看 TCPIP 是否正在发送任何流量。如果是,请在微型端口发送处理程序上设置另一个断点(使用 !ndiskd.minidriver 查找其 MiniportSendNetBufferLists 处理程序)并验证发送数据包是否已到达网卡。
  • 微型端口的接收数据包池是否为空?如果是这样,微型端口将无法指示更多数据包,因为它已用完 NBL。使用 !ndiskd.pendingnbls 查看是否有尚未返回的 NBL。它通常会找到零个或可能一个待决的 NBL;如果您发现有数百个,则表明您的过滤器中存在 NBL 泄漏。
  • 微型端口是否发现任何问题?检查微型端口统计信息。在 Windows 8 中,使用 PowerShell 中的 Get-NetAdapterStatistics

如果您不熟悉 Windows 内核网络调试,您将很难确定某些事情看起来好还是坏。理想情况下,您应该有另一台可以运行的计算机进行调试,这样您就可以看到“正常”的样子。

如果您的搜索仍然没有找到任何有用的内容,另一个攻击角度是对您所做的代码更改进行二分搜索。首先,注释掉您对过滤器接收路径所做的所有更改,并将其恢复为与示例中完全相同的状态。这能解决问题吗?如果是这样,请继续。 。 。 .

关于c - 为什么我的 NDIS 筛选器驱动程序的 FilterReceiveNetBufferLists 处理程序未被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18215252/

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