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

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

?? tdi_install.c

?? 開(kāi)源的防火墻代碼
?? C
字號(hào):
/* Copyright (c) 2002-2005 Vladislav Goncharov.
*
* Redistribution and use in source forms, with and without modification,
* are permitted provided that this entire comment appears intact.
*
* Redistribution in binary form may occur without any restrictions.
*
* This software is provided ``AS IS'' without any warranties of any kind.
*/

// $Id: tdi_install.c,v 1.5 2002/12/05 13:03:05 dev Exp $

/*
* Installer for tdifw_drv.sys driver (Win >= 2k)
* Also sets loading order between tcpip.sys & netbt.sys
*/

#include <windows.h>
#include <stdio.h>

static void		install_driver(void);
static void		uninstall_driver(void);

int
main(int argc, char **argv)
{
	if (argc != 2)
		{
		fprintf(stderr, "use: %s install|remove\n", argv[0]);
		return 0;
		}
	
	if (strcmp(argv[1], "install") == 0)
		install_driver();
	else if (strcmp(argv[1], "remove") == 0)
		uninstall_driver();
	else
		fprintf(stderr, "Invalid command line! \"%s\" is not \"install\" or \"remove\"\n", argv[1]);
	
	return 0;
}

#define DRIVER_NAME		"tdifw_drv"
#define DRIVER_BINARY	"system32\\drivers\\tdifw_drv.sys"
#define DRIVER_GROUP	"PNP_TDI"
#define DRIVER_DEPENDS	"tcpip\0\0"

#define swap_dword(a, b)	\
		do {					\
		DWORD c =(a);		\
		(a) = (b);			\
		(b) = c;			\
		} while(0)

void	install_driver(void)
{
	SC_HANDLE sch, tdifw, tcpip, netbt;
	DWORD tdifw_tag, tcpip_tag, netbt_tag, n, tags[100], type, i;
	char buf[2048];
	QUERY_SERVICE_CONFIG *cfg = (QUERY_SERVICE_CONFIG *)buf;
	HKEY reg_key;
	LONG status;
	int n_type;
	BOOL has_tcpip, has_netbt, has_tdifw;
	
	// install driver like instdrv does
	
	sch = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
	if (sch == NULL)
		{
		fprintf(stderr, "OpenSCManager: %d\n", GetLastError());
		return;
		}
	
	tdifw = CreateService(sch,
			      DRIVER_NAME,
			      DRIVER_NAME,
			      SERVICE_ALL_ACCESS,
			      SERVICE_KERNEL_DRIVER,
			      SERVICE_SYSTEM_START,
			      SERVICE_ERROR_NORMAL,
			      DRIVER_BINARY,
			      DRIVER_GROUP,
			      &tdifw_tag,
			      DRIVER_DEPENDS,
			      NULL,
			      NULL
			      );
	if (tdifw == NULL)
		{
		fprintf(stderr, "CreateService: %d\n", GetLastError());
		return;
		}
	
	// get tag for tcpip
	
	tcpip = OpenService(sch, "tcpip", SERVICE_ALL_ACCESS);
	if (tcpip == NULL)
		{
		fprintf(stderr, "OpenService(tcpip): %d\n", GetLastError());
		return;
		}
	
	if (!QueryServiceConfig(tcpip, cfg, sizeof(buf), &n))
		{
		fprintf(stderr, "QueryServiceConfig(tcpip): %d\n", GetLastError());
		return;
		}
	tcpip_tag = cfg->dwTagId;
	
	// get tag for netbt
	
	netbt = OpenService(sch, "netbt", SERVICE_ALL_ACCESS);
	if (netbt == NULL)
		{
		fprintf(stderr, "OpenService(netbt): %d\n", GetLastError());
		return;
		}
	
	if (!QueryServiceConfig(netbt, cfg, sizeof(buf), &n))
		{
		fprintf(stderr, "QueryServiceConfig(tcpip): %d\n", GetLastError());
		return;
		}
	netbt_tag = cfg->dwTagId;
	
	// change tags for all drivers
	
	// 1. tcpip
	// 2. tdifw
	// 3. netbt
	
	// get registry key
	
	status = RegOpenKey(HKEY_LOCAL_MACHINE,
			    "SYSTEM\\CurrentControlSet\\Control\\GroupOrderList", &reg_key);
	if (status != ERROR_SUCCESS)
		{
		fprintf(stderr, "RegOpenKey: %d\n", status);
		return;
		}
	
	n = sizeof(tags) - sizeof(DWORD) * 3;		// reserve space for 3 new items
	status = RegQueryValueEx(reg_key, DRIVER_GROUP, NULL, &type, (LPBYTE)tags, &n);
	if (status != ERROR_SUCCESS)
		{
		fprintf(stderr, "RegQueryValueEx: %d\n", status);
		return;
		}
	
	// find each num
	
	n /= sizeof(DWORD);
	
	// try to find tag for tdifw if not found add it
	has_tdifw = FALSE;
	for (i = 1; i < n; i++)
		if (tags[i] == tdifw_tag)
			{
			has_tdifw = TRUE;
			break;
			}
	
	if (!has_tdifw)
		tags[n++] = tdifw_tag;
	
	has_tcpip = has_netbt = FALSE;
	n_type = 1;
	
	for (i = 1; i < n; i++)
		if (tags[i] == tcpip_tag || tags[i] == netbt_tag || tags[i] == tdifw_tag)
		{
		
		switch (n_type)
			{
			case 1:
				// 1. tcpip
				tags[i] = tcpip_tag;
				has_tcpip = TRUE;
				break;
			case 2:
				// 2. tdifw
				tags[i] = tdifw_tag;
				break;
			case 3:
				// 3. netbt_tag
				tags[i] = netbt_tag;
				has_netbt = TRUE;
				break;
			}
		n_type++;
		
		}
	
	if (!has_tcpip)
		{
		printf("Warning! tcpip with tag %d not found! Trying to restore registry GroupOrderList key...\n", tcpip_tag);
		
		// insert at the begin of list
		memmove(&tags[1], &tags[2], (n - 1) * sizeof(DWORD));
		tags[1] = tcpip_tag;
		n++;
		}
	if (!has_netbt)
		{
		printf("Warning! netbt with tag %d not found! Trying to restore registry GroupOrderList key...\n", netbt_tag);
		
		// append to the end of list
		tags[n++] = netbt_tag;
		}
	
	// save number of entries
	tags[0] = n - 1;
	
	// that's all. save new order
	
	status = RegSetValueEx(reg_key, DRIVER_GROUP, 0, type, (LPBYTE)tags, n * sizeof(DWORD));
	if (status != ERROR_SUCCESS)
		{
		fprintf(stderr, "RegSetValueEx: %d\n", status);
		return;
		}
	
	// ok
	RegCloseKey(reg_key);
	CloseServiceHandle(tcpip);
	CloseServiceHandle(tdifw);
	CloseServiceHandle(netbt);
	CloseServiceHandle(sch);
	
	printf("success\n");
}

void	uninstall_driver(void)
{
	SC_HANDLE sch, service;
	DWORD tags[100], n, type, i, service_tag;
	char buf[2048];
	HKEY reg_key;
	QUERY_SERVICE_CONFIG *cfg = (QUERY_SERVICE_CONFIG *)buf;
	int status;
	
	sch = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
	if (sch == NULL)
		{
		fprintf(stderr, "OpenSCManager: %d\n", GetLastError());
		return;
		}
	
	// get tag for driver
	
	service = OpenService(sch, DRIVER_NAME, SERVICE_ALL_ACCESS);
	if (service == NULL)
		{
		fprintf(stderr, "OpenService: %d\n", GetLastError());
		return;
		}
	
	if (!QueryServiceConfig(service, cfg, sizeof(buf), &n))
		{
		fprintf(stderr, "QueryServiceConfig(tcpip): %d\n", GetLastError());
		return;
		}
	service_tag = cfg->dwTagId;
	
	// remove tag from registry
	
	status = RegOpenKey(HKEY_LOCAL_MACHINE,
			    "SYSTEM\\CurrentControlSet\\Control\\GroupOrderList", &reg_key);
	if (status != ERROR_SUCCESS)
		{
		fprintf(stderr, "RegOpenKey: %d\n", status);
		return;
		}
	
	n = sizeof(tags);
	status = RegQueryValueEx(reg_key, DRIVER_GROUP, NULL, &type, (LPBYTE)tags, &n);
	if (status != ERROR_SUCCESS)
		{
		fprintf(stderr, "RegQueryValueEx: %d\n", status);
		return;
		}
	
	n /= sizeof(DWORD);
	
	for (i = 1; i < n; i++)
		if (tags[i] == service_tag)
			{
			memmove(&tags[i], &tags[i + 1], (n - i - 1) * sizeof(DWORD));
			n--;
			break;
			}
	
	tags[0] = n - 1;
	
	status = RegSetValueEx(reg_key, DRIVER_GROUP, 0, type, (LPBYTE)tags, n * sizeof(DWORD));
	if (status != ERROR_SUCCESS)
		{
		fprintf(stderr, "RegSetValueEx: %d\n", status);
		return;
		}
	
	RegCloseKey(reg_key);
	
	// remove service
	
	if (!DeleteService(service))
		{
		if (GetLastError() != ERROR_SERVICE_MARKED_FOR_DELETE)
			{
			fprintf(stderr, "DeleteService: %d\n", GetLastError());
			return;
			}
		printf("Restart Windows to changes has effect\n");
		}
	
	CloseServiceHandle(service);
	CloseServiceHandle(sch);
	
	printf("success\n");
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产在热久久| 精品福利一二区| 亚洲男人的天堂在线观看| 国产精品性做久久久久久| 中文字幕亚洲欧美在线不卡| 欧美亚洲动漫制服丝袜| 一区二区三区中文免费| 91精品国产综合久久婷婷香蕉| 久久精品久久99精品久久| 国产精品久久久久9999吃药| 欧美精品乱码久久久久久按摩| 福利一区二区在线| 亚洲一区二区三区在线看| 久久精品亚洲乱码伦伦中文| 精品视频在线免费看| 国产一区二区主播在线| 亚洲午夜影视影院在线观看| 日韩欧美一二区| 色婷婷国产精品| 国产传媒久久文化传媒| 亚洲电影你懂得| 亚洲欧美中日韩| 久久久亚洲国产美女国产盗摄 | av电影在线不卡| 日韩中文字幕亚洲一区二区va在线 | 精品亚洲国内自在自线福利| 亚洲色欲色欲www| 日韩精品一区二区三区三区免费| 成人午夜视频在线| 亚洲视频在线观看三级| 欧美亚洲禁片免费| 韩国v欧美v日本v亚洲v| 婷婷一区二区三区| 五月综合激情网| 一区二区三区在线观看动漫| 国产精品免费网站在线观看| 日韩精品一区二区三区视频| 精品视频全国免费看| 欧美在线播放高清精品| 99综合电影在线视频| 成人高清视频免费观看| 韩国欧美国产1区| 蜜桃视频一区二区| 日韩黄色免费网站| 亚洲一卡二卡三卡四卡无卡久久 | 日韩中文字幕区一区有砖一区 | 欧美日韩一区二区三区四区| 9i在线看片成人免费| 国产91露脸合集magnet| 国产乱码精品一区二区三区av| 蜜桃视频一区二区三区在线观看| 亚洲一区二区在线播放相泽| 亚洲成人av福利| 亚洲妇女屁股眼交7| 亚洲香肠在线观看| 午夜影院久久久| 亚洲成av人片在www色猫咪| 日韩av高清在线观看| 奇米一区二区三区av| 青青草原综合久久大伊人精品| 亚洲人成精品久久久久久| 亚洲狠狠爱一区二区三区| 亚洲国产cao| 男女男精品视频网| 奇米综合一区二区三区精品视频| 日韩—二三区免费观看av| 久久精品久久99精品久久| 国产一区二区免费看| 成人av影视在线观看| 91一区二区在线| 欧美日韩午夜精品| 日韩美女天天操| 日本一区二区综合亚洲| 亚洲欧美综合另类在线卡通| 亚洲影院在线观看| 日韩avvvv在线播放| 国产在线精品一区二区不卡了| 91视频观看免费| 欧美日韩一区二区在线观看视频| 91精品久久久久久久99蜜桃| 精品福利av导航| 国产精品国产三级国产aⅴ中文| 国产69精品久久久久777| 五月天欧美精品| 国产激情一区二区三区| 色噜噜狠狠色综合欧洲selulu| 欧美日韩不卡视频| 国产欧美日韩中文久久| 婷婷久久综合九色综合绿巨人| 国产激情精品久久久第一区二区| 欧美专区在线观看一区| 国产亚洲精品bt天堂精选| 亚洲午夜精品久久久久久久久| 国产福利一区二区| 日韩一区二区在线看片| 亚洲美女一区二区三区| 国产一区二区福利视频| 欧美三级在线视频| 中文字幕一区二区三区不卡| 久久精品国产77777蜜臀| 91福利视频久久久久| 国产日韩欧美制服另类| 日本亚洲一区二区| 91亚洲国产成人精品一区二区三| wwww国产精品欧美| 日日夜夜精品免费视频| 91福利在线播放| 国产精品视频yy9299一区| 裸体一区二区三区| 欧美日韩日日骚| 亚洲视频一区二区在线| 国产成人超碰人人澡人人澡| 日韩手机在线导航| 午夜精品一区二区三区免费视频| 成人精品视频.| 久久久99免费| 国内精品不卡在线| 日韩一级视频免费观看在线| 亚洲国产精品久久艾草纯爱| 一本久久a久久精品亚洲| 日本一区二区三级电影在线观看 | www..com久久爱| 久久综合丝袜日本网| 久久激情综合网| 欧美一区欧美二区| 日韩和欧美一区二区三区| 一本大道久久a久久精二百| 亚洲欧洲av色图| 99久久精品国产一区| 国产精品高潮呻吟| 成人99免费视频| 中文字幕一区av| av亚洲精华国产精华精| 中文字幕中文乱码欧美一区二区 | 夜夜操天天操亚洲| 91黄色在线观看| 亚洲午夜久久久久中文字幕久| 欧洲激情一区二区| 亚洲一区二区三区美女| 欧美三级日韩在线| 日韩激情在线观看| 日韩一级成人av| 国模少妇一区二区三区| 国产日韩欧美麻豆| 成人看片黄a免费看在线| 中文字幕一区二区三| 91久久精品一区二区二区| 亚洲夂夂婷婷色拍ww47| 在线不卡免费av| 久久精品久久久精品美女| 日韩一区二区免费电影| 国产福利视频一区二区三区| 国产精品久久精品日日| 在线观看亚洲成人| 蜜臀av性久久久久蜜臀aⅴ| 精品国产百合女同互慰| 国产馆精品极品| 亚洲欧洲无码一区二区三区| 欧洲精品一区二区三区在线观看| 视频一区二区欧美| 26uuu成人网一区二区三区| 丁香六月久久综合狠狠色| 亚洲日本一区二区三区| 欧美剧情片在线观看| 国产一区中文字幕| 椎名由奈av一区二区三区| 欧美日韩国产欧美日美国产精品| 日韩精品国产精品| 国产女人18水真多18精品一级做| 一本一道久久a久久精品综合蜜臀| 天天影视色香欲综合网老头| 精品国产乱码久久久久久图片| a在线欧美一区| 日韩精品每日更新| 国产精品视频在线看| 7777精品久久久大香线蕉| 国产精品亚洲专一区二区三区 | 亚洲精品国产第一综合99久久 | 国产一区二区三区四区五区入口| 中文字幕日韩av资源站| 欧美一级淫片007| 99久久精品免费看国产免费软件| 日韩av中文在线观看| 国产精品网站导航| 制服丝袜亚洲精品中文字幕| 国产不卡免费视频| 日韩电影在线一区二区| 中文字幕亚洲一区二区av在线 | 国产在线精品一区二区夜色| 亚洲视频一二区| 久久综合久久综合亚洲| 欧美三级一区二区| a级精品国产片在线观看| 视频一区中文字幕| 亚洲欧美另类小说| 国产性天天综合网| 日韩午夜激情视频| 欧美日韩在线观看一区二区| 成人少妇影院yyyy| 极品少妇xxxx精品少妇|