我爱Aspx >> Asp.Net >> .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)
Ҷƪл˵?
如何得到硬盘序列号.net [C#][05-20]
ASP.NET中利用存储过程实现模糊查..[05-20]
ASP.NET之精通弹出窗口[05-20]
ASP.NET中用healthMonitor属性用..[05-20]
Asp.net中处理共享Session的问题[05-20]
ASP.NET应用程序设计的10大技巧[05-20]
ASP.NET 中防止 Access 数据库被..[05-20]
ASP.NET保持用户状态的九种选择(..[05-20]
asp.net URL重写续[05-20]
ASP.NET的实时天气及24小时天气预..[05-20]
如何得到硬盘序列号.net [C#][05-20]
GOOGLE 提供的在线翻译 感谢GOOG..[05-20]
GOOGLE 提供的在线翻译 感谢GOOG..[05-20]
回车键提交表单(点击按钮)[05-20]
ASP.NET中利用存储过程实现模糊查..[05-20]
ASP.NET之精通弹出窗口[05-20]
CSS的技巧[05-20]
ASP.NET中用healthMonitor属性用..[05-20]
CSS的技巧[05-20]
八大法则防范ASP网站漏洞[05-20]