C# NDIS到C的中间驱动程序接口#

C# NDIS到C的中间驱动程序接口#,c#,networking,driver,ndis,C#,Networking,Driver,Ndis,我正在开发一个专门的防火墙应用程序。解决方案需要32位和64位兼容。我的公司希望保留当前的程序接口,它是用C语言编写的 我需要的是:一种监视和操作系统上所有网络流量的方法。我的研究使我相信NDIS(网络驱动程序接口规范)中间驱动程序是一条可行之路。如果我能用C#编写这种驱动程序,那就太好了,但我不确定这是否可行。至少,我需要一个C#接口来连接任何语言编写的驱动程序 我在网上找到了一个很好的资源,可以在题为“扩展Microsoft PassThru NDIS中间驱动程序”的系列文章中创建一个:

我正在开发一个专门的防火墙应用程序。解决方案需要32位和64位兼容。我的公司希望保留当前的程序接口,它是用C语言编写的

我需要的是:一种监视和操作系统上所有网络流量的方法。我的研究使我相信NDIS(网络驱动程序接口规范)中间驱动程序是一条可行之路。如果我能用C#编写这种驱动程序,那就太好了,但我不确定这是否可行。至少,我需要一个C#接口来连接任何语言编写的驱动程序

我在网上找到了一个很好的资源,可以在题为“扩展Microsoft PassThru NDIS中间驱动程序”的系列文章中创建一个:

  • 然而,它的日期是(2003年)。在我投入阅读和学习之前,我想确保我没有浪费时间


    有更好的方法吗?是否有任何开源项目或文章比上面的文章更好地解释这个过程?我在球场上吗?请提供帮助。

    同一作者的另一页标题为“简要介绍可用于在Microsoft Windows平台上过滤网络数据和网络数据包的各种技术”


    它提到了其他选项,例如“TDI flter driver”和“User Mode Network Data Filtering”(用户模式网络数据过滤),根据您是否真的想处理系统上的所有网络流量,这些选项可能会更合适。

    我不确定我是否理解正确。您是在尝试用C#编写驱动程序,还是打算在创建驱动程序(使用C++)后使用C#与驱动程序进行接口@米基:没关系。如果我能用C#编写驱动程序,那就太好了,但我不确定这是否可行。至少,我需要一个C#接口来连接用任何语言编写的驱动程序。我不一定要操纵所有网络流量,但解决方案必须能够。这不是一个选项,这是一个项目要求。所有流量,或者例如,只有所有互联网协议流量?啊,我明白你的意思。很抱歉所有IP流量。我所说的所有网络流量,是指从/到任何网络设备。如果您只需要过滤IP流量,那么协议栈中较高的过滤器(例如TDI驱动程序而不是NDIS驱动程序)可能更适合您。接下来的问题是,您的过滤器是否会比TDI级别更高:您需要过滤内核模式代码(如文件系统实现)看到的IP流量,还是只需要过滤用户模式代码(如Win32应用程序)看到的IP流量?因为在后一种情况下,用户模式过滤器可能就足够了。从这次对话中,我发现我知道的不多。我不确定是否需要过滤内核模式代码。我需要捕获系统上任何程序的任何网络通信,所以可能仅限于Win32应用程序?