我想写一个NDIS微型端口驱动程序,作为虚拟适配器图像描述弹出(就像VMWare一样)。其目的是将数据包转发到现有连接的vpn内部IP(适配器)。可能存在许多现有的vpn连接。我的驱动程序通过不同的进程将数据包转发给其中一个(进程可能连接到相同的IP,因此路由表以区分不同的连接将不起作用)。
我可以参考的任何提示或示例? 谢谢。
答案 0 :(得分:1)
NDIS驱动程序是低级别的。他们不了解用户模式进程;当数据包命中NDIS时,所有进程上下文都消失了。由于您的问题陈述似乎非常关注用户模式进程标识,因此NDIS驱动程序可能不适合解决该问题。
听起来您可以使用WFP将流量定向到相应的界面。 WFP本质上是一个巨大的规则引擎:有输入规则(如“进程名称是'notepad.exe'”或“用户是'bob'”)和输出操作(如“将所有流量重新路由到网络接口42”)。如果您足够幸运能够使用内置规则和操作来表示您的问题,您甚至可能根本不需要编写任何内核代码。 (想想你会保存的所有时间!)
如果由于某种原因您无法使用WFP(可能需要针对Windows XP),那么您应该调查编写Winsock LSP。 LSP插入目标进程内的套接字代码,并可以进行某种程度的流量操作。