我对WinDivert有疑问。DivertSend 不起作用,GetLastError() 返回 1237 ?
我还有一个问题。我想根据 IP 列表转移流量,我有一个包含超过 20000 条记录的 CSV 文件,每条记录都包含一个 IP 范围,问题是我可以只调用 DivertOpen,而我的 CSV 文件中只有 500 条记录作为过滤器字符串。如果我用超过 500 条记录调用 DivertOpen 作为过滤器,我得到“过滤器语法错误”。我该如何解决这个问题。谢谢
我对WinDivert有疑问。DivertSend 不起作用,GetLastError() 返回 1237 ?
我还有一个问题。我想根据 IP 列表转移流量,我有一个包含超过 20000 条记录的 CSV 文件,每条记录都包含一个 IP 范围,问题是我可以只调用 DivertOpen,而我的 CSV 文件中只有 500 条记录作为过滤器字符串。如果我用超过 500 条记录调用 DivertOpen 作为过滤器,我得到“过滤器语法错误”。我该如何解决这个问题。谢谢
WinDivert 不适合处理长/复杂的过滤器字符串(例如 20,000 个 IP 地址的列表)。WinDivert 文档中简要提到了这一点:即,理想情况下,过滤器字符串应该同时具有选择性和短,并且越短/选择性越好。
对于您的应用程序,短字符串是不可能的,您最好捕获所有网络流量(例如通过调用DivertOpen("true", ...)
)并使用一些有效的方法(例如二进制搜索)在用户模式应用程序中进行过滤。只需重新注入不匹配的数据包。
PS:感谢1237错误问题的报告。