亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? av.c

?? 開源的防火墻代碼
?? C
字號:
// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil -*- (for GNU Emacs)
//
// $Id: av.c,v 1.2 2003/05/13 12:47:39 dev Exp $
/** @addtogroup common
 *@{
 */

/**
 * @file av.c
 * Implementation of functions to work with list of argument-value (av) pairs
 */

#include <ntddk.h>

#include "av.h"
#include "except.h"
#include "memtrack.h"

/** entry contains key-value pair and its type */
struct av_entry {
	struct		av_entry *next;		/**< next entry */
	const void	*key;				/**< key of value to search */
	int			type;				/**< type of pair for search */
	void		*value;				/**< some transparent value */
};

/** number of hash buckets */
#define HASH_SIZE	0x1000
/** get hash by some key */
#define CALC_HASH(key)  (((ULONG)(key) >> 5) % HASH_SIZE)

/** hash for av-pairs */
static struct av_entry **g_av_hash;
/** guard spinlock for hash */
KSPIN_LOCK	g_av_hash_guard;

NTSTATUS
init_av(void)
{
	g_av_hash = (struct av_entry **)malloc_np(sizeof(struct av_entry *) * HASH_SIZE);
	if (g_av_hash == NULL) {
		KdPrint(("[ndis_hk] init_av: malloc_np!\n"));
		return STATUS_INSUFFICIENT_RESOURCES;
	}

	memset(g_av_hash, 0, sizeof(struct av_entry *) * HASH_SIZE);

	KeInitializeSpinLock(&g_av_hash_guard);

	return STATUS_SUCCESS;
}

void
free_av(void)
{
	ULONG hash;
	struct av_entry *av, *av_next;
	KIRQL irql;
	NTSTATUS status = STATUS_OBJECT_NAME_NOT_FOUND;

	KeAcquireSpinLock(&g_av_hash_guard, &irql);

	for (hash = 0; hash < HASH_SIZE; hash++) {
		for (av = g_av_hash[hash]; av != NULL;) {
			av_next = av->next;
				
			if (av->value != NULL && av->type > 0)
				free(av->value);
			free(av);

			av = av_next;
		}
	}

	free(g_av_hash);
	g_av_hash = NULL;

	KeReleaseSpinLock(&g_av_hash_guard, irql);
}

NTSTATUS
add_av(const void *key, void *value, int type, BOOLEAN no_guard)
{
	ULONG hash = CALC_HASH(key);
	KIRQL irql;
	struct av_entry *av;
	NTSTATUS status;

	if (!no_guard)
		KeAcquireSpinLock(&g_av_hash_guard, &irql);

	__try {

		for (av = g_av_hash[hash]; av != NULL; av = av->next)
			if (av->key == key && av->type == type)
				break;

		if (av == NULL) {

			av = (struct av_entry *)malloc_np(sizeof(*av));
			if (av == NULL) {
				KdPrint(("[ndis_hk] add_av: malloc_np!\n"));
				status = STATUS_INSUFFICIENT_RESOURCES;
				__leave;
			}

			av->next = g_av_hash[hash];
			av->key = key;
			av->value = value;
			av->type = type;

			g_av_hash[hash] = av;

		} else {
			KdPrint(("[ndis_hk] add_av: reuse of key 0x%x type %d\n", key, type));

			// change value for av
			if (av->value != NULL && av->type > 0)
				free(av->value);
			av->value = value;
		}

		status = STATUS_SUCCESS;
	
	} __except((status = GetExceptionCode(), EXCEPTION_EXECUTE_HANDLER)) {
		KdPrint(("[ndis_hk] add_av: exception 0x%x!\n", status));
	}

	if (!no_guard)
		KeReleaseSpinLock(&g_av_hash_guard, irql);

	return status;
}

void *
get_av(const void *key, int type, KIRQL *irql)
{
	ULONG hash = CALC_HASH(key);
	struct av_entry *av;

	if (irql != NULL)
		KeAcquireSpinLock(&g_av_hash_guard, irql);

	for (av = g_av_hash[hash]; av != NULL; av = av->next)
		if (av->key == key && av->type == type)
			return av->value;

	if (irql != NULL)
		KeReleaseSpinLock(&g_av_hash_guard, *irql);
	
	return NULL;
}

NTSTATUS
del_av(const void *key, int type, BOOLEAN no_guard)
{
	ULONG hash = CALC_HASH(key);
	struct av_entry *av, *av_next;
	KIRQL irql;
	NTSTATUS status = STATUS_OBJECT_NAME_NOT_FOUND;

	if (!no_guard)
		KeAcquireSpinLock(&g_av_hash_guard, &irql);

	av_next = NULL;
	for (av = g_av_hash[hash]; av != NULL; av = av->next) {
		if (av->key == key && av->type == type) {
			
			if (av_next != NULL)
				av_next->next = av->next;
			else
				g_av_hash[hash] = av->next;

			if (av->value != NULL && av->type > 0)
				free(av->value);
			free(av);

			status = STATUS_SUCCESS;
			break;
		}

		av_next = av;
	}

	if (!no_guard)
		KeReleaseSpinLock(&g_av_hash_guard, irql);
	
	return status;
}
/*@}*/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品久久艾草纯爱| 国产一区二区按摩在线观看| 7777精品伊人久久久大香线蕉完整版 | 欧美在线高清视频| 中文字幕+乱码+中文字幕一区| 欧美人xxxx| 91精品国产手机| 制服丝袜亚洲播放| 亚洲欧洲日韩av| 国产精品久久99| 亚洲柠檬福利资源导航| 国产精品电影一区二区三区| 久久精品国产亚洲高清剧情介绍| 日本不卡一二三| 美脚の诱脚舐め脚责91 | 国产大陆a不卡| 99久久婷婷国产综合精品| 国产成人精品www牛牛影视| 884aa四虎影成人精品一区| 一区二区三区精品视频在线| 日韩电影免费在线看| 麻豆视频观看网址久久| 欧美日韩中文另类| 久久综合国产精品| 国产欧美日本一区视频| 一区二区三区在线视频免费观看| 成人动漫视频在线| 欧美日韩日日摸| 亚洲国产毛片aaaaa无费看| 色先锋aa成人| 555www色欧美视频| 日韩国产欧美三级| 欧美久久久久久久久| 中文字幕av免费专区久久| 丰满白嫩尤物一区二区| 欧美日韩一区小说| 五月婷婷综合网| 波多野结衣91| 精品国产免费一区二区三区四区 | 亚洲一区av在线| 成人自拍视频在线| 69精品人人人人| 免费成人在线网站| 久久你懂得1024| 久久精品99国产精品日本| 精品理论电影在线| 亚洲成人精品一区二区| 国产a区久久久| 一二三四社区欧美黄| 欧美日韩国产中文| 久久99精品久久久久| 欧美精品色一区二区三区| 蜜桃视频一区二区| 欧美国产日韩精品免费观看| 色综合久久久网| 美女视频黄免费的久久 | 国产欧美日韩三级| 91视频在线看| 日本一区二区三区免费乱视频| caoporn国产精品| 午夜久久福利影院| 国产亲近乱来精品视频| 色婷婷亚洲婷婷| 另类综合日韩欧美亚洲| 国产精品久久久久9999吃药| 欧美日韩一级二级| 成人黄色电影在线| 日韩高清不卡一区| 久久久国产一区二区三区四区小说| 成人美女在线观看| 天天色天天爱天天射综合| 国产三级一区二区三区| 国产一区二区视频在线| 一区二区三区四区不卡在线 | 欧美日韩一本到| 国产精品一二三在| 欧美高清一级片在线观看| 欧美日韩国产系列| 91免费精品国自产拍在线不卡| 日本麻豆一区二区三区视频| 国产精品色在线观看| a美女胸又www黄视频久久| 午夜在线成人av| 国产精品盗摄一区二区三区| 日韩欧美国产电影| 国产综合色视频| 欧美国产精品专区| 日韩欧美高清在线| 91色porny蝌蚪| 顶级嫩模精品视频在线看| 美女诱惑一区二区| 亚洲国产cao| 玉米视频成人免费看| 欧美日韩aaaaaa| 色久优优欧美色久优优| 日本欧美一区二区| 亚洲一区二区在线视频| 亚洲激情欧美激情| 中文字幕一区二区三| 久久综合资源网| 精品美女被调教视频大全网站| 欧美精品一二三区| 在线观看日韩毛片| 欧美在线观看一区二区| 91网址在线看| 91理论电影在线观看| 99久久精品国产精品久久| 成人爱爱电影网址| 国产成人福利片| 高清在线不卡av| 国产高清精品网站| 国产成人精品三级麻豆| 国产成人精品亚洲777人妖 | 日本女优在线视频一区二区| 午夜精品一区二区三区免费视频| 一区二区三国产精华液| 一卡二卡三卡日韩欧美| 亚洲免费三区一区二区| 亚洲国产aⅴ天堂久久| 亚洲国产一区二区三区| 亚洲第一电影网| 日本女优在线视频一区二区| 激情综合色播激情啊| 国产成人精品一区二区三区网站观看| 国产精品99久久久久久宅男| 成人av在线电影| 色综合久久久久久久| 欧美精品 日韩| 精品成人一区二区三区| 国产蜜臀97一区二区三区 | 国产suv一区二区三区88区| 国产东北露脸精品视频| 99久久国产免费看| 欧美视频一区二区| 国产一区二区三区免费播放| 国产福利视频一区二区三区| 成人妖精视频yjsp地址| 日本乱人伦一区| 日韩欧美成人午夜| 国产精品久久久久一区二区三区共| 日韩精品1区2区3区| 亚洲欧洲三级电影| 亚洲高清中文字幕| 国产伦理精品不卡| 91啪九色porn原创视频在线观看| 在线精品观看国产| 亚洲精品一区二区三区99| 亚洲欧美另类在线| 久久精品国产久精国产爱| 成人免费看视频| 91高清视频免费看| 亚洲精品在线观看网站| 亚洲激情中文1区| 看电视剧不卡顿的网站| 99re这里只有精品首页| 日韩一级二级三级精品视频| 7777精品伊人久久久大香线蕉经典版下载 | 国产黄色精品网站| 在线视频欧美区| 久久亚区不卡日本| 亚洲国产精品人人做人人爽| 国产美女av一区二区三区| 在线观看一区二区精品视频| 久久美女高清视频| 亚洲电影在线播放| 粉嫩av一区二区三区| 在线不卡欧美精品一区二区三区| 国产精品欧美极品| 久久精品国产精品亚洲综合| 在线观看av一区二区| 国产精品国产三级国产aⅴ中文 | 久久久久综合网| 日本一不卡视频| 欧美自拍偷拍一区| 国产精品美女久久久久久久久久久 | 日韩一区二区在线看片| 亚洲三级免费观看| 亚洲午夜在线视频| 国产成人夜色高潮福利影视| 欧美一区二区视频在线观看2020 | 蜜桃av一区二区三区| 在线免费观看日本欧美| 国产精品久久夜| 国产成人自拍网| 久久亚洲欧美国产精品乐播| 秋霞午夜av一区二区三区| 欧美午夜影院一区| 一区二区三区毛片| 在线观看亚洲专区| 亚洲免费大片在线观看| 91农村精品一区二区在线| 国产精品日日摸夜夜摸av| 高清成人在线观看| 国产欧美日韩亚州综合| 国产成人啪免费观看软件 | 午夜国产精品一区| 欧美乱熟臀69xxxxxx| 亚洲成人777| 欧美一级在线视频| 久久99国产精品久久99|