• 大小: 26KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-20
  • 语言: 其他
  • 标签: 防火墙  

资源简介

用PacketFilterExtensionPtr实现的防火墙

资源截图

代码片段和文件信息

/*

  DrvFltIp.C

  Author: your name
  Last Updated: 2001-01-01/0101

  This framework is generated by QuickSYS.

*/

#include 
#include 
#include 
#include 
#include 
#include “DrvFltIp.h“

#if DBG
#define dprintf DbgPrint
#else
#define dprintf(x)
#endif

NTSTATUS DrvDispatch(IN PDEVICE_object Deviceobject IN PIRP Irp);
VOID DrvUnload(IN PDRIVER_object Driverobject);

NTSTATUS SetFilterFunction(PacketFilterExtensionPtr filterFunction);

NTSTATUS AddFilterToList(IPFilter *pf);
void ClearFilterList(void);
PF_FORWARD_ACTION cbFilterFunction(IN unsigned char *PacketHeaderIN unsigned char *Packet IN unsigned int PacketLength IN unsigned int RecvInterfaceIndex IN unsigned int SendInterfaceIndex IN unsigned long RecvlinkNextHop IN unsigned long SendlinkNextHop);

#define NT_DEVICE_NAME L“\\Device\\DrvFltIp“
#define DOS_DEVICE_NAME L“\\DosDevices\\DrvFltIp“


struct filterList *first = NULL;
struct filterList *last = NULL;

/*++

Routine Description:

    Installable driver initialization entry point.
    This entry point is called directly by the I/O system.

Arguments:

    Driverobject - pointer to the driver object

    RegistryPath - pointer to a unicode string representing the path
                   to driver-specific key in the registry

Return Value:

    STATUS_SUCCESS if successful
    STATUS_UNSUCCESSFUL otherwise

--*/
NTSTATUS DriverEntry(IN PDRIVER_object Driverobject IN PUNICODE_STRING RegistryPath)
{

    PDEVICE_object         deviceobject = NULL;
    NTSTATUS               ntStatus;
    UNICODE_STRING         deviceNameUnicodeString;
    UNICODE_STRING         devicelinkUnicodeString;

dprintf(“DrvFltIp.SYS: entering DriverEntry\n“);


//we have to create the device
RtlInitUnicodeString(&deviceNameUnicodeString NT_DEVICE_NAME);

ntStatus = IoCreateDevice(Driverobject 
0
&deviceNameUnicodeString 
FILE_DEVICE_DRVFLTIP
0
FALSE
&deviceobject);


    if ( NT_SUCCESS(ntStatus) )
    {
    
        // Create a symbolic link that Win32 apps can specify to gain access
        // to this driver/device
        RtlInitUnicodeString(&devicelinkUnicodeString DOS_DEVICE_NAME);

        ntStatus = IoCreateSymboliclink(&devicelinkUnicodeString &deviceNameUnicodeString);

        if ( !NT_SUCCESS(ntStatus) )
        {
            dprintf(“DrvFltIp.SYS: IoCreateSymboliclink failed\n“);
        }

        //
        // Create dispatch points for device control create close.
        //

        Driverobject->MajorFunction[IRP_MJ_CREATE]         =
        Driverobject->MajorFunction[IRP_MJ_CLOSE]          =
        Driverobject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DrvDispatch;
        Driverobject->DriverUnload                         = DrvUnload;
    }

    if ( !NT_SUCCESS(ntStatus) )
    {
        dprintf(“Error in initia

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     目录          0  2004-06-30 12:42  简单个人防火墙

     文件       3957  2002-12-22 01:18  简单个人防火墙\DrvFltIp.sys

     目录          0  2004-06-30 12:42  简单个人防火墙\testDrv

     目录          0  2004-06-30 12:42  简单个人防火墙\testDrv\res

     文件       1078  2002-12-20 22:18  简单个人防火墙\testDrv\res\testDrv.ico

     文件        399  2002-12-20 22:18  简单个人防火墙\testDrv\res\testDrv.rc2

     文件        731  2002-12-20 23:21  简单个人防火墙\testDrv\resource.h

     文件       1161  2002-12-21 14:02  简单个人防火墙\testDrv\sockUtil.cpp

     文件        147  2002-12-21 13:40  简单个人防火墙\testDrv\sockutil.h

     文件        209  2002-12-20 22:18  简单个人防火墙\testDrv\StdAfx.cpp

     文件       1054  2002-12-20 22:18  简单个人防火墙\testDrv\StdAfx.h

     文件      14430  2002-12-22 01:22  简单个人防火墙\testDrv\TDriver.cpp

     文件       2812  2002-12-19 14:34  简单个人防火墙\testDrv\TDriver.h

     文件       1165  2002-12-22 01:24  简单个人防火墙\testDrv\testDrv.clw

     文件       2077  2002-12-20 22:18  简单个人防火墙\testDrv\testDrv.cpp

     文件       4428  2002-12-22 01:41  简单个人防火墙\testDrv\testDrv.dsp

     文件       1335  2002-12-20 22:18  简单个人防火墙\testDrv\testDrv.h

     文件       5396  2002-12-22 01:31  简单个人防火墙\testDrv\testDrv.rc

     文件       6483  2002-12-22 01:51  简单个人防火墙\testDrv\testDrvDlg.cpp

     文件       1528  2002-12-22 01:24  简单个人防火墙\testDrv\testDrvDlg.h

     文件      13913  2002-12-22 01:12  简单个人防火墙\DrvFltIp.c

     文件       5100  2002-12-22 01:41  简单个人防火墙\DrvFltIp.dsp

     文件        740  2002-12-20 22:18  简单个人防火墙\DrvFltIp.dsw

     文件       2894  2002-12-21 00:09  简单个人防火墙\DrvFltIp.h

     文件         79  2002-12-21 00:47  简单个人防火墙\sources

     文件        271  2000-07-26 18:37  简单个人防火墙\makefile

----------- ---------  ---------- -----  ----

                71387                    26


评论

共有 条评论