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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tap-win32.c

?? 一個Windows下的Linux專用虛擬機
?? C
字號:
/* * This source code is a part of coLinux source package. * * Dan Aloni <da-x@colinux.org>, 2003 (c) * * The code is licensed under the GPL. See the COPYING file at * the root directory. * * Orignally based on code from OpenVPN, * Copyright (C) 2002-2003 James Yonan <jim@yonan.net> */#include <stdio.h>#include <windows.h>#include <ddk/ntapi.h>#include <ddk/winddk.h>#include <ddk/ntddk.h>#include <colinux/common/common.h>#include <colinux/os/user/misc.h>#include <colinux/os/winnt/user/misc.h>#include "../../kernel/tap-win32/constants.h"#include "../../kernel/tap-win32/common.h"bool_tis_tap_win32_dev(const char *guid){	HKEY netcard_key;	LONG status;	DWORD len;	int i = 0;	status = RegOpenKeyEx(		HKEY_LOCAL_MACHINE,		ADAPTER_KEY,		0,		KEY_READ,		&netcard_key);	if (status != ERROR_SUCCESS) {		printf("Error opening registry key: %s\n", ADAPTER_KEY);		return PFALSE;	}	while (PTRUE)	{		char enum_name[256];		char unit_string[256];		HKEY unit_key;		const char component_id_string[] = "ComponentId";		char component_id[256];		const char net_cfg_instance_id_string[] = "NetCfgInstanceId";		char net_cfg_instance_id[256];		DWORD data_type;		len = sizeof (enum_name);		status = RegEnumKeyEx(			netcard_key,			i,			enum_name,			&len,			NULL,			NULL,			NULL,			NULL);		if (status == ERROR_NO_MORE_ITEMS)			break;		else if (status != ERROR_SUCCESS) {			printf("Error enumerating registry subkeys of key: %s\n",				ADAPTER_KEY);			return PFALSE;		}			snprintf (unit_string, sizeof(unit_string), "%s\\%s",			  ADAPTER_KEY, enum_name);		status = RegOpenKeyEx(			HKEY_LOCAL_MACHINE,			unit_string,			0,			KEY_READ,			&unit_key);		if (status != ERROR_SUCCESS) {			printf("Error opening registry key: %s\n", unit_string); 			return PFALSE;		}		else		{			len = sizeof (component_id);			status = RegQueryValueEx(				unit_key,				component_id_string,				NULL,				&data_type,				(PBYTE)component_id,				&len);			if (!(status != ERROR_SUCCESS || data_type != REG_SZ)) {				len = sizeof (net_cfg_instance_id);				status = RegQueryValueEx(					unit_key,					net_cfg_instance_id_string,					NULL,					&data_type,					(PBYTE)net_cfg_instance_id,					&len);				if (status == ERROR_SUCCESS && data_type == REG_SZ)				{					if (!strcmp (component_id, TAP_COMPONENT_ID)					    && !strcmp (net_cfg_instance_id, guid))					{						RegCloseKey (unit_key);						RegCloseKey (netcard_key);						return PTRUE;					}				}			}			RegCloseKey (unit_key);		}		++i;	}	RegCloseKey (netcard_key);	return PFALSE;}co_rc_t get_device_guid(	char *name,	int name_size,	char *actual_name,	int actual_name_size){	LONG status;	HKEY control_net_key;	DWORD len;	int i = 0;	int stop = 0;	status = RegOpenKeyEx(		HKEY_LOCAL_MACHINE,		NETWORK_CONNECTIONS_KEY,		0,		KEY_READ,		&control_net_key);	if (status != ERROR_SUCCESS) {		printf("Error opening registry key: %s", NETWORK_CONNECTIONS_KEY);		return CO_RC(ERROR);	}	while (!stop)	{		char enum_name[256];		char connection_string[256];		HKEY connection_key;		char name_data[256];		DWORD name_type;		const char name_string[] = "Name";		len = sizeof (enum_name);		status = RegEnumKeyEx(			control_net_key,			i,			enum_name,			&len,			NULL,			NULL,			NULL,			NULL);		if (status == ERROR_NO_MORE_ITEMS)			break;		else if (status != ERROR_SUCCESS) {			printf("Error enumerating registry subkeys of key: %s",			       NETWORK_CONNECTIONS_KEY);			return CO_RC(ERROR);		}		snprintf(connection_string, 			 sizeof(connection_string),			 "%s\\%s\\Connection",			 NETWORK_CONNECTIONS_KEY, enum_name);		status = RegOpenKeyEx(			HKEY_LOCAL_MACHINE,			connection_string,			0,			KEY_READ,			&connection_key);				if (status == ERROR_SUCCESS) {			len = sizeof (name_data);			status = RegQueryValueEx(				connection_key,				name_string,				NULL,				&name_type,				(LPBYTE)name_data,				&len);			if (status != ERROR_SUCCESS || name_type != REG_SZ) {				co_terminal_print("colinux-net-daemon: error opening registry key: %s\\%s\\%s",				       NETWORK_CONNECTIONS_KEY, connection_string, name_string);			        return CO_RC(ERROR);			}			else {				if (is_tap_win32_dev(enum_name)) {					co_terminal_print("colinux-net-daemon: found TAP device named \"%s\"\n", name_data);					stop = 1;					snprintf(name, name_size, "%s", enum_name);					if (actual_name) {						if (*actual_name) {							/* verify given name */							if (strcmp(name_data, actual_name) != 0) {								stop = 0;							}						}						else {							/* name is not given */							snprintf(actual_name, actual_name_size, "%s", name_data);						}					}				}			}			RegCloseKey (connection_key);		}		++i;	}	RegCloseKey (control_net_key);	if (stop == 0)		return CO_RC(ERROR);	return CO_RC(OK); }co_rc_t open_tap_win32(HANDLE *phandle, char *prefered_name){	char device_path[256];	char device_guid[0x100];	co_rc_t rc;	HANDLE handle;	BOOL bret;	char name_buffer[0x100] = {0, };	struct {		unsigned long major;		unsigned long minor;		unsigned long debug;			} version;	DWORD version_len;	if (prefered_name != NULL)		co_snprintf(name_buffer, sizeof(name_buffer), "%s", prefered_name);	rc = get_device_guid(device_guid, sizeof(device_guid), name_buffer, sizeof(name_buffer));	if (!CO_OK(rc))		return CO_RC(NOT_FOUND);	co_terminal_print("colinux-net-daemon: opening TAP: \"%s\"\n", name_buffer);	/*	 * Open Windows TAP-Win32 adapter	 */	snprintf (device_path, sizeof(device_path), "%s%s%s",		  USERMODEDEVICEDIR,		  device_guid,		  TAPSUFFIX);	handle = CreateFile (		device_path,		GENERIC_READ | GENERIC_WRITE,		0,		0,		OPEN_EXISTING,		FILE_ATTRIBUTE_SYSTEM | FILE_FLAG_OVERLAPPED,		0		);	if (handle == INVALID_HANDLE_VALUE) {		co_terminal_print_last_error("colinux-net-daemon: tap device open");		return CO_RC(ERROR);	}	bret = DeviceIoControl(handle, TAP_IOCTL_GET_VERSION,			       &version, sizeof (version),			       &version, sizeof (version), &version_len, NULL);	if (bret == FALSE) {		co_terminal_print_last_error("colinux-net-daemon: error getting driver version");		CloseHandle(handle);		return CO_RC(ERROR);	}	co_terminal_print("colinux-net-daemon: TAP driver version %ld.%ld\n", version.major, version.minor);		*phandle = handle;	return CO_RC(OK);	}BOOL tap_win32_set_status(HANDLE handle, BOOL status){	unsigned long len = 0;	return DeviceIoControl(handle, TAP_IOCTL_SET_MEDIA_STATUS,				&status, sizeof (status),				&status, sizeof (status), &len, NULL);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费版在线看| 欧美一区二区性放荡片| 欧美精品久久一区| 久久免费看少妇高潮| 亚洲国产中文字幕| 不卡的电影网站| 亚洲精品一区二区精华| 亚洲国产成人91porn| 一本久久a久久免费精品不卡| 99国产精品久久| 日本高清免费不卡视频| 91久久精品日日躁夜夜躁欧美| 91在线精品一区二区三区| 色综合久久久久久久| 欧美制服丝袜第一页| 欧美一三区三区四区免费在线看 | 欧美日韩国产综合一区二区| 欧美日韩亚洲国产综合| 日韩欧美在线影院| 国产日韩亚洲欧美综合| 日韩伦理电影网| 午夜免费久久看| 久久精品av麻豆的观看方式| 国产999精品久久久久久| 91成人在线观看喷潮| 日韩一区二区三区av| 国产午夜精品一区二区三区视频| 国产精品女主播av| 亚洲综合激情网| 日韩主播视频在线| 高清不卡在线观看| 欧美情侣在线播放| 国产精品天天摸av网| 午夜精品久久久久久久久久久| 久久精品国产久精国产| av激情综合网| 欧美一区二区网站| 国产精品进线69影院| 天天综合网 天天综合色| 国产一区二区91| 在线观看日韩国产| 久久久欧美精品sm网站| 亚洲国产精品精华液网站 | 中文字幕第一区第二区| 亚洲综合色网站| 国产成人免费视频网站高清观看视频 | 精品一区二区三区在线播放视频| 成人夜色视频网站在线观看| 欧美午夜一区二区三区| 精品国产不卡一区二区三区| 一区二区三区国产精品| 国产91精品一区二区麻豆亚洲| 欧美日韩国产a| 日韩一区中文字幕| 国产精品 欧美精品| 在线综合视频播放| 一区av在线播放| hitomi一区二区三区精品| 欧美va亚洲va香蕉在线| 亚洲不卡一区二区三区| 在线精品观看国产| 一区精品在线播放| 成人精品亚洲人成在线| 久久久高清一区二区三区| 日韩中文字幕1| 欧美精品日韩综合在线| 偷拍亚洲欧洲综合| 欧美日韩免费电影| 欧美放荡的少妇| 日韩成人午夜精品| 国产精品久久久久久久浪潮网站 | 成人一区二区三区视频在线观看 | 亚洲美女屁股眼交3| 日韩视频一区二区| 91成人国产精品| 国产成人精品免费视频网站| 一区二区三区欧美激情| 久久伊人中文字幕| 欧美亚洲动漫精品| 福利电影一区二区| 奇米影视一区二区三区小说| 亚洲三级小视频| 欧美精品一区二区三区蜜桃| 欧美在线视频你懂得| 国产精品18久久久久| 青青草原综合久久大伊人精品优势 | 夜夜嗨av一区二区三区| 久久婷婷久久一区二区三区| 欧美三级三级三级爽爽爽| 国产成人av电影免费在线观看| 奇米精品一区二区三区四区| 亚洲精品五月天| 国产目拍亚洲精品99久久精品| 欧美一区二区视频网站| 日本韩国欧美一区二区三区| 东方aⅴ免费观看久久av| 欧美视频一区二区三区| 一区二区三区精品视频| 日韩午夜av一区| www.色精品| 婷婷夜色潮精品综合在线| 欧美一二三四区在线| 成人av在线观| 午夜久久久影院| 久久久久久久久久久久久女国产乱 | 青青国产91久久久久久| 久久精品亚洲国产奇米99| 在线日韩av片| 久久精品99国产精品日本| 亚洲天天做日日做天天谢日日欢| 欧美亚洲一区二区在线| 精油按摩中文字幕久久| 欧美久久久久久久久久| 成人综合在线网站| 成人国产一区二区三区精品| 成人h动漫精品一区二| 国产精品综合网| 成人av在线电影| 91在线观看视频| 欧美婷婷六月丁香综合色| 精品视频1区2区3区| 欧美精品粉嫩高潮一区二区| 欧美一区二区三区在线看| 精品国产精品一区二区夜夜嗨| 欧美精品一区二区在线播放| 欧美精品一区视频| 中文字幕永久在线不卡| 一区二区三区在线视频播放| 亚洲午夜电影网| 久久成人18免费观看| 成人永久看片免费视频天堂| 色综合一区二区三区| 欧美日韩高清一区| 亚洲精品一区二区三区福利| 国产欧美一区二区三区网站| 欧美肥妇毛茸茸| 国产福利精品导航| 国产在线不卡一卡二卡三卡四卡| 五月天激情综合| 亚洲国产日韩综合久久精品| 亚洲精品欧美在线| 亚洲精品乱码久久久久久日本蜜臀 | 7777精品伊人久久久大香线蕉超级流畅 | 国产欧美日韩中文久久| 欧美一区二区在线看| 欧美性大战久久久| 精品国产乱码久久久久久影片| 中文一区二区完整视频在线观看 | 欧美一区二区免费视频| 日本高清成人免费播放| 色哟哟一区二区三区| www.日韩精品| 日本高清不卡一区| 欧美日韩中文字幕一区二区| 在线观看亚洲一区| 欧美裸体bbwbbwbbw| 欧美一三区三区四区免费在线看| 正在播放亚洲一区| 日韩免费高清av| 国产色产综合产在线视频| 中文字幕av一区二区三区高| 国产精品久久久久久久久免费丝袜 | 67194成人在线观看| 欧美一区二区三区四区视频| 欧美一二三区在线| 国产日韩亚洲欧美综合| 中文字幕亚洲一区二区av在线 | 777久久久精品| 精品国产乱码久久久久久图片| 久久久美女艺术照精彩视频福利播放| 精品国产一区二区国模嫣然| 日本一区二区三区免费乱视频| 国产精品大尺度| 日产国产高清一区二区三区| 韩国一区二区三区| 一二三四区精品视频| 国产精品18久久久久久久久久久久 | 综合久久久久久| 国产精品伊人色| 日韩精品一区国产麻豆| 亚洲成人av免费| 欧美三级三级三级爽爽爽| 亚洲免费伊人电影| 99天天综合性| 国产精品免费丝袜| 成人午夜激情片| 国产亚洲一二三区| 久久精品国产精品青草| 91精品国产综合久久久蜜臀粉嫩| 亚洲一二三四在线| 91福利小视频| 亚洲亚洲人成综合网络| 日韩欧美国产系列| 亚洲最新视频在线观看| 九色综合国产一区二区三区| 欧洲一区在线观看| 国产精品欧美综合在线| 久久疯狂做爰流白浆xx| 在线观看视频一区二区 | 欧美日韩国产一区|