• λ我爱Aspx >> Asp.Net >> .NET框架中的驱动程序应用技术
  • .NET框架中的驱动程序应用技术

  • :未知  Դ:internet  :2007-5-20 16:42:07  ؼ:.net
  • .NET框架中的驱动程序应用技术

    ——用.NET和NDIS Hook Driver开发单机版网络防火墙的关键技术分析

    N-Byte网络守望者是一款由我们团队开发的单机版网络安全工具,简言之,就是一个用.NET开发的个人版防火墙。在N-Byte网络守望者1.0版的开发中,我们使用了NDIS Hook Driver技术来实现网络封包过滤功能,这使我们的N-Byte网络守望者能够在网络层过滤网络封包,从而实现强大的功能。

    由于我们软件的主程序是用C#写的,C#中没有提供具有类似DeviceIoControl函数功能的驱动设备控制函数,而NDIS Hook Driver技术下的驱动程序是用DDK下的C语言写的,为了能够实现主程序对驱动程序的控制和相互通信,我们采用了以下设计方案:

    在以上方案中,我们需要一个负责主程序与NDIS Hook Driver驱动程序通信与控制的模块DriverDll.dll,并用C#编写的一个封装驱动程序中封包信息的模块,可以发送这个驱动程序信息到主程序,主程序可识别并操作模块中的数据类型。

    在.NET应用程序使用驱动程序的问题上,我们面临着两个问题:

    1.怎样实现.NET应用程序控制驱动程序的功能?

    2.怎样从驱动程序向.NET应用程序传递非托管的数据类型?

    以下是我们就这些问题的详细解决方法:

    怎样实现.NET应用程序控制驱动程序的功能?

    我们使用托管C++编写的DriverDll.dll来实现对驱动程序的直接控制,而主程序通过调用其中的方法来实现对驱动程序的间接控制。比如我们在NByte.h文件中定义了START_IP_HOOK常数用来作为传给驱动程序用来开启驱动程序封包过滤功能的参数,下面我们在托管C++模块中定义了IoCtrl托管类并定义了下面的向缓冲区写入参数的方法:

    //向缓冲区写入数据。

    DWORD WriteIo(DWORD code,PVOID buffer,DWORD count)

    Ҷƪл˵?
  • һƪSQL Server无人值守安装
    һƪ如何得到硬盘序列号.net [C#]