SPI防火墙设计之DLL的编写

// FireWallDll.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include "windows.h"
#include "winsock2.h"
#include <stdio.h>
#include <ws2spi.h>
#include <tchar.h>
#include <string.h>
#include <sporder.h>
#include "Head.h"

#pragma comment(lib,"ws2_32.lib")

LPWSAPROTOCOL_INFOW protoinfo;
unsigned long protoinfosize;
int totalprotos;
WSPPROC_TABLE  nextproctable;
GUID  TCPguid={0x4d1e91fd,0x116a,0x44aa,{0x8f,0xd4,0x1d,0x2c,0xf2,0x7b,0xd9,0xa9}};
GUID  TCPchainguid={0x4d1e91fd,0x116a,0x44aa,{0x8f,0xd4,0x1d,0x2c,0xf2,0x7b,0xd9,0xa9}};

//获取一个端口列表条目,放在Item中
BOOL GetPortListItem(int i,PORTLISTITEM *Item)
{
	//进入临界区
	EnterCriticalSection(&RWSCriticalSection);
	if(i<PortListSize)
	{
		*Item = PortList[i];
		LeaveCriticalSection(&RWSCriticalSection);
		return TRUE;
	}
	LeaveCriticalSection(&RWSCriticalSection);
	return FALSE;
}

//添加一个端口条目
BOOL AddPortListItem(PORTLISTITEM Item)
{
	//进入临界区
	EnterCriticalSection(&RWSCriticalSection);
	PortList[PortListSize] = Item;
	PortListSize++;
	//离开临界区
	LeaveCriticalSection(&RWSCriticalSection);
	return TRUE;
}

//删除一个端口条目
BOOL DeletePortListItem(int i)
{
	//进入临界区
	EnterCriticalSection(&RWSCriticalSection);
	if(i<PortListSize)
	{
		for(int j=PortListSize-1; j>i ;j--)
		{
			PortList[j-1] = PortList[j];
		}
		PortListSize--;
		//离开临界区
		LeaveCriticalSection(&RWSCriticalSection);
		return TRUE;
	}
	LeaveCriticalSection(&RWSCriticalSection);
	return FALSE;
}

//
//获取一个IP条目
BOOL GetIpListItem(int i,IPLISTITEM *Item)
{
	//进入临界区
	EnterCriticalSection(&RWSCriticalSection);
	if(i < IpListSize)
	{
		*Item = IpList[i];
		//离开临界区
		LeaveCriticalSection(&RWSCriticalSection);
		return TRUE;
	}
	//离开临界区
	LeaveCriticalSection(&RWSCriticalSection);
	return FALSE;
}

//添加一个IP条目
BOOL AddIpListItem(IPLISTITEM Item)
{
	//进入临界区
	EnterCriticalSection(&RWSCriticalSection);
	IpList[IpListSize] = Item;
	IpListSize++;
	//离开临界区
	LeaveCriticalSection(&RWSCriticalSection);
	return TRUE;
}

//删除一个IP条目
BOOL DeleteIpListItem(int i)
{
	//进入临界区
	EnterCriticalSection(&RWSCriticalSection);
	if(i<IpListSize)
	{
		for(int j = IpListSize-1;j>i;j--)
		{
			IpList[j-1] = IpList[j];
		}
		IpListSize--;
		//离开临界区
		LeaveCriticalSection(&RWSCri
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值