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

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

?? vdkcmd.c

?? Virtual Disk Driver
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/*	vdkcmd.c	Virtual Disk drive control program (console version)	Copyright (C) 2003 Ken Kato*/#include "vdkbase.h"#include "vdkutil.h"#include "vdkfile.h"#include "vdkioctl.h"#include "vdkaccess.h"#include "vdkpart.h"#include "vdkmsg.h"#include "vdkver.h"#include "vdkctl.h"#include "cowdisk.h"#include "vmdisk.h"#include "VDiskUtil.h"////	current driver state//static DWORD driver_state = VDK_NOT_INSTALLED;////	command processing functions//typedef int (*cmdfnc)(char **args);static int	Install(char **args);static int	Remove(char **args);static int	Start(char **args);static int	Stop(char **args);static int	Driver(char **args);static int	DiskNum(char **args);static int	Create(char **args);static int	Delete(char **args);static int	Device(char **args);static int	Open(char **args);static int	Close(char **args);static int	Link(char **args);static int	Unlink(char **args);static int	Image(char **args);static int	View(char **args);static int	Help(char **args);#ifdef _DEBUGstatic int	Trace(char **args);#endif	// _DEBUGstatic const struct {	char	*cmd;	int		min_argc;	int		max_argc;	cmdfnc	func;	DWORD	usage;	DWORD	helpmsg;}Commands[] = {	{ "INSTALL",	2, 4, Install,	MSG_USAGE_INSTALL	, MSG_HELP_INSTALL	},	{ "REMOVE",		2, 2, Remove,	MSG_USAGE_REMOVE	, MSG_HELP_REMOVE	},	{ "START",		2, 2, Start,	MSG_USAGE_START		, MSG_HELP_START	},	{ "STOP",		2, 2, Stop,		MSG_USAGE_STOP		, MSG_HELP_STOP		},	{ "DRIVER",		2, 3, Driver,	MSG_USAGE_DRIVER	, MSG_HELP_DRIVER	},	{ "DISK",		3, 3, DiskNum,	MSG_USAGE_DISK		, MSG_HELP_DISK		},	{ "CREATE",		2, 2, Create,	MSG_USAGE_CREATE	, MSG_HELP_CREATE	},	{ "DELETE",		2, 2, Delete,	MSG_USAGE_DELETE	, MSG_HELP_DELETE	},	{ "VIEW",		3, 3, View,		MSG_USAGE_VIEW		, MSG_HELP_VIEW		},	{ "OPEN",		4, 7, Open,		MSG_USAGE_OPEN		, MSG_HELP_OPEN		},	{ "CLOSE",		3, 4, Close,	MSG_USAGE_CLOSE		, MSG_HELP_CLOSE	},	{ "LINK",		4, 5, Link,		MSG_USAGE_LINK		, MSG_HELP_LINK		},	{ "ULINK",		3, 4, Unlink,	MSG_USAGE_ULINK		, MSG_HELP_ULINK	},	{ "IMAGE",		2, 3, Image,	MSG_USAGE_IMAGE		, MSG_HELP_IMAGE	},	{ "HELP",		2, 3, Help,		MSG_USAGE_HELP		, MSG_HELP_HELP		},#ifdef _DEBUG	{ "DEVICE",		2, 2, Device,	0, 0 },	{ "TRACE",		2, 20, Trace,	0, 0 },#endif	// _DEBUG	{ NULL,			0, 0, NULL,		0, 0 }};////	local functions//static BOOL IsUserAdmin();static DWORD GetDiskFromDrive(CHAR drive, PULONG disk);static void PrintFileInfo(PVDK_OPEN_FILE_INFO file_info);static DWORD Retry_Callback(PVOID param, DWORD err);static DWORD Continue_Callback(PVOID param, DWORD err);static void PartList_Callback(PPARTITION_ITEM pitem, PVOID param);static void Assign_Callback(PPARTITION_ITEM pitem, PVOID param);////	struct used for Assign_Callback parameter//typedef struct _ASSIGN_PARAM {	ULONG	disk_number;	ULONG	part_number;	BOOL	read_only;	PCHAR	drive_letters;}ASSIGN_PARAM, *PASSIGN_PARAM;#ifdef VDK_DEBUG#define VDK_DEBUG_TAG	" (debug)"#else#define VDK_DEBUG_TAG#endif////	main//int main(int argc, char **argv){	char	*cmd;	DWORD	ret;	int		idx;	//	//	Reports memory leaks at process termination	//#ifdef VDK_DEBUG	_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);#endif	printf(		VDK_PRODUCT_NAME " version "		VDK_PRODUCT_VERSION_STR VDK_DEBUG_TAG "\n"		"http://chitchat.at.infoseek.co.jp/vmware/\n\n"	);	if (!IsUserAdmin()) {		PrintMessage(MSG_MUST_BE_ADMIN);		return -1;	}	//	//	At least one parameter (command) is required	//	if (argc < 2) {		PrintMessage(MSG_HELP_USAGE);		return -1;	}	//	//	Get Current Driver state	//	if ((ret = VdkGetDriverState(&driver_state)) != ERROR_SUCCESS) {		PrintMessage(MSG_GET_STAT_NG);		printf("%s\n", VdkStatusStr(ret));		return -1;	}	//	//	Try to dismount all zombie devices	//	VdkDismountAll(TRUE);	//	//	Process vdk command parameter	//	cmd = *(argv + 1);	idx = 0;	while (Commands[idx].cmd) {		if (_stricmp(cmd, Commands[idx].cmd) == 0) {			if (argc < Commands[idx].min_argc ||				argc > Commands[idx].max_argc) {				PrintMessage(Commands[idx].usage);				return -1;			}			ret = (*Commands[idx].func)(argv + 2);			return ret;		}		idx++;	}	//	//	unknown command	//	PrintMessage(MSG_UNKNOWN_COMMAND, cmd);	return -1;}////	Installs the Virtual Disk Driver Dynamically//	Command Line Parameters://	vdk install [path] [/auto]//	(optional) driver file path	- default to executive's dir//	(optional) auto start switch - default to demand start//int	Install(char **args){	char *install_path = NULL;	BOOL auto_start = FALSE;	DWORD ret;	//	process parameters	while (*args) {		if (_stricmp(*args, "/auto") == 0) {			if (auto_start) {				PrintMessage(MSG_DUPLICATE_ARGS, *args);				return -1;			}			else {				auto_start = TRUE;			}		}		else if (**args == '/') {			PrintMessage(MSG_UNKNOWN_OPTION, *args, "INSTALL");			return -1;		}		else {			if (install_path) {				PrintMessage(MSG_DUPLICATE_ARGS, "path");				return -1;			}			else {				install_path = *args;			}		}		args++;	}	//	already installed?	if (driver_state != VDK_NOT_INSTALLED) {		PrintMessage(MSG_ALREADY_INSTALLED);		return -1;	}	//	install the driver	if ((ret = VdkInstall(install_path, auto_start)) != ERROR_SUCCESS) {		PrintMessage(MSG_INSTALL_NG);		printf("%s\n", VdkStatusStr(ret));		return -1;	}	//	operation successfull	PrintMessage(MSG_INSTALL_OK);	return 0;}////	Remove Virtual Disk Driver from system//	Command Line Parameters: None//int	Remove(char **args){	DWORD	ret;	int		i;	UNREFERENCED_PARAMETER(args);	//	ensure the driver is installed	if (driver_state == VDK_NOT_INSTALLED) {		PrintMessage(MSG_NOT_INSTALLED);		return -1;	}	//	ensure the driver is stopped	if (driver_state != SERVICE_STOPPED) {		if (Stop(NULL) == -1) {			return -1;		}	}	//	remove the driver	if ((ret = VdkRemove()) != ERROR_SUCCESS) {		PrintMessage(MSG_REMOVE_NG);		printf("%s\n", VdkStatusStr(ret));		return -1;	}	// Wait for the driver to be actually removed for 3 secs Max.	for (i = 0; i < 10; i++) {		ret = VdkGetDriverState(&driver_state);		if (ret != ERROR_SUCCESS) {			PrintMessage(MSG_GET_STAT_NG);			printf("%s\n", VdkStatusStr(ret));			return -1;		}		if (driver_state == VDK_NOT_INSTALLED) {			break;		}		Sleep(300);	}	if (driver_state == VDK_NOT_INSTALLED) {		PrintMessage(MSG_REMOVE_OK);	}	else {		PrintMessage(MSG_REMOVE_PENDING);	}	return 0;}////	Start the Virtual Disk Driver//	Command Line Parameters: None//int	Start(char **args){	DWORD	ret;	UNREFERENCED_PARAMETER(args);	//	ensure that the driver is installed	if (driver_state == VDK_NOT_INSTALLED) {		if ((ret = VdkInstall(NULL, FALSE)) == ERROR_SUCCESS) {			PrintMessage(MSG_INSTALL_OK);		}		else {			PrintMessage(MSG_INSTALL_NG);			printf("%s\n", VdkStatusStr(ret));			return -1;		}	}	//	ensure that the driver is not started yet	if (driver_state == SERVICE_RUNNING) {		PrintMessage(MSG_ALREADY_RUNNING);		return -1;	}	//	start the driver	if ((ret = VdkStart(&driver_state)) != ERROR_SUCCESS) {		PrintMessage(MSG_START_NG);		printf("%s\n", VdkStatusStr(ret));		return -1;	}	//	operation successfull	PrintMessage(MSG_START_OK);	return 0;}////	Stop the Virtual Disk Driver//	Command Line Parameters: None//int	Stop(char **args){	DWORD ret;	UNREFERENCED_PARAMETER(args);	//	ensure that the driver is installed	if (driver_state == VDK_NOT_INSTALLED) {		PrintMessage(MSG_NOT_INSTALLED);		return -1;	}	//	ensure that the driver is running	if (driver_state == SERVICE_STOPPED) {		PrintMessage(MSG_NOT_RUNNING);		return -1;	}	//	ensure that all image are unmounted	if (driver_state == SERVICE_RUNNING) {		char *param[] = { "*", NULL };		if (Close(param) == -1) {			return -1;		}	}	ret = VdkDismountAll(FALSE);	if (ret != ERROR_SUCCESS) {		PrintMessage(MSG_STOP_NG);		PrintMessage(MSG_DRIVE_IN_USE);		return -1;	}	//	stop the driver	if ((ret = VdkStop(&driver_state)) != ERROR_SUCCESS) {		PrintMessage(MSG_STOP_NG);		printf("%s\n", VdkStatusStr(ret));		return -1;	}	if (driver_state != SERVICE_STOPPED) {		PrintMessage(MSG_STOP_PENDING);		PrintMessage(MSG_RESTART_WARN);		return -1;	}	PrintMessage(MSG_STOP_OK);	return 0;}////	Show current driver status//	Command Line Parameters: None//int	Driver(char **args){	TCHAR	path[MAX_PATH];	DWORD	start_type;	ULONG	initial_dev;	ULONG	version;	ULONG	disk_device;	ULONG	attached_part;	ULONG	orphaned_part;	ULONG	reference_count;	DWORD	ret;	// if the driver is not installed, no more info to show	if (driver_state == VDK_NOT_INSTALLED) {		PrintMessage(MSG_CURRENT_STATUS);		PrintMessage(MSG_STATUS_NOT_INST);		return 0;	}	//	get current driver config	if ((ret = VdkGetDriverConfig(path, &start_type, &initial_dev)) != ERROR_SUCCESS) {		PrintMessage(MSG_GET_CONFIG_NG);		printf("%s\n", VdkStatusStr(ret));		return -1;	}	//	print driver file path	PrintMessage(MSG_DRIVER_LOCATION, path);	//	print running driver version	version = 0;	if (driver_state == SERVICE_RUNNING) {		ret = VdkCheckVersion(NULL, &version);	}	else {		ret = VdkCheckFileVersion(path, &version);	}	if (ret != ERROR_SUCCESS &&		ret != ERROR_REVISION_MISMATCH) {		PrintMessage(MSG_GET_CONFIG_NG);		printf("%s\n", VdkStatusStr(ret));		return -1;	}	if (version) {		PrintMessage(MSG_DRIVER_VERSION,			HIWORD(version),			(version & 0x00007fff),			(version & 0x00008000) ? " (debug)" : "");	}	//	print driver start type	PrintMessage(MSG_START_TYPE);	switch (start_type) {	case SERVICE_AUTO_START:		PrintMessage(MSG_START_AUTO);		break;	case SERVICE_BOOT_START:		PrintMessage(MSG_START_BOOT);		break;	case SERVICE_DEMAND_START:		PrintMessage(MSG_START_DEMAND);		break;	case SERVICE_DISABLED:		PrintMessage(MSG_START_DISABLED);		break;	case SERVICE_SYSTEM_START :		PrintMessage(MSG_START_SYSTEM);		break;	default:		PrintMessage(MSG_UNKNOWN_ULONG, start_type);		break;	}	//	print current status	PrintMessage(MSG_CURRENT_STATUS);	switch (driver_state) {	case SERVICE_STOPPED:		PrintMessage(MSG_STATUS_STOPPED);		break;	case SERVICE_START_PENDING:		PrintMessage(MSG_STATUS_START_P);		break;	case SERVICE_STOP_PENDING:		PrintMessage(MSG_STATUS_STOP_P);		break;	case SERVICE_RUNNING:		PrintMessage(MSG_STATUS_RUNNING);		break;	case SERVICE_CONTINUE_PENDING:		PrintMessage(MSG_STATUS_CONT_P);		break;	case SERVICE_PAUSE_PENDING:		PrintMessage(MSG_STATUS_PAUSE_P);		break;	case SERVICE_PAUSED:		PrintMessage(MSG_STATUS_PAUSED);		break;	default:		PrintMessage(MSG_UNKNOWN_ULONG, driver_state);		break;	}	if (version < VDK_DRIVER_VERSION_VAL) {		return 0;	}	//	if driver is not running, no more info	if (driver_state != SERVICE_RUNNING) {		PrintMessage(MSG_DISK_DEVICE, initial_dev);		return 0;	}	ret = VdkGetDriverInfo(NULL,		&disk_device,		&attached_part,		&orphaned_part,		&reference_count);	if (ret != ERROR_SUCCESS) {		PrintMessage(MSG_GET_CONFIG_NG);		printf("%s\n", VdkStatusStr(ret));		return -1;	}	PrintMessage(MSG_DISK_DEVICE, disk_device);	//	//	hidden option	//	if (*args && !_stricmp(*args, "full")) {		PrintMessage(MSG_ATTACHED_PART, attached_part);		PrintMessage(MSG_ORPHANED_PART, orphaned_part);		PrintMessage(MSG_REFERENCE_COUNT, reference_count);	}	return 0;}////	Set initial number of disk devices//	Command Line Parameters://		device number//int DiskNum(char **args){	ULONG	dev_num;	DWORD	ret;	//	ensure that the driver is installed	if (driver_state == VDK_NOT_INSTALLED) {		PrintMessage(MSG_NOT_INSTALLED);		return -1;	}	if (!isdigit(**args)) {		PrintMessage(MSG_INVALID_DISKNUM, *args);		return -1;	}	dev_num = atol(*args);	if (dev_num == 0 || dev_num > VDK_MAXIMUM_DISK_NUM) {		PrintMessage(MSG_INVALID_DISKNUM, *args);		return -1;	}	ret = VdkSetDeviceNum(dev_num);	if (ret != ERROR_SUCCESS) {		PrintMessage(MSG_DISKNUM_NG);		printf("%s\n", VdkStatusStr(ret));		return -1;	}	PrintMessage(MSG_DISKNUM_OK, dev_num);	return 0;}////	Create a new disk device//	Command Line Parameters: none//int Create(char **args){	ULONG disk_device;	DWORD ret;	UNREFERENCED_PARAMETER(args);	//	ensure that the driver is installed	if (driver_state == VDK_NOT_INSTALLED) {		PrintMessage(MSG_NOT_INSTALLED);		return -1;	}	//	ensure that the driver is running	if (driver_state != SERVICE_RUNNING) {		PrintMessage(MSG_NOT_RUNNING);		return -1;	}	//	get current number of disk devices	ret = VdkGetDriverInfo(NULL, &disk_device, NULL, NULL, NULL);	if (ret != ERROR_SUCCESS) {		PrintMessage(MSG_GET_CONFIG_NG);		printf("%s\n", VdkStatusStr(ret));		return -1;	}	if (disk_device >= VDK_MAXIMUM_DISK_NUM) {		PrintMessage(MSG_NO_MORE_DISK);		return -1;	}	//	create a disk	ret = VdkCreateDisk(NULL);	if (ret != ERROR_SUCCESS) {		PrintMessage(MSG_CREATEDISK_NG, disk_device);		printf("%s\n", VdkStatusStr(ret));		return -1;	}	PrintMessage(MSG_CREATEDISK_OK, disk_device);	//	print new number of disk devices	ret = VdkGetDriverInfo(NULL, &disk_device, NULL, NULL, NULL);	if (ret != ERROR_SUCCESS) {		PrintMessage(MSG_GET_CONFIG_NG);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产激情一区二区三区四区| 国产麻豆视频精品| 国产一区二区三区日韩| 丰满少妇在线播放bd日韩电影| 粉嫩一区二区三区性色av| 一本大道久久a久久精二百| 欧美系列日韩一区| wwww国产精品欧美| 亚洲综合在线第一页| 麻豆国产精品视频| 91麻豆蜜桃一区二区三区| 日韩欧美专区在线| 最近中文字幕一区二区三区| 日韩成人dvd| 色妞www精品视频| 精品理论电影在线观看| 午夜精品久久久久影视| 成人妖精视频yjsp地址| 日韩亚洲欧美成人一区| 亚洲美女免费视频| 日韩激情视频在线观看| 91成人在线免费观看| 欧美一区二区三区四区五区| 中文字幕综合网| 国内精品不卡在线| 欧美精选一区二区| 国产精品动漫网站| 国产曰批免费观看久久久| 4438x亚洲最大成人网| 亚洲精品国产a| 久久99精品久久久| 91精品国产黑色紧身裤美女| 亚洲麻豆国产自偷在线| 粉嫩av亚洲一区二区图片| 日韩一区二区三区视频在线观看| 亚洲蜜臀av乱码久久精品蜜桃| 欧美日韩国产成人在线91| 国产精品少妇自拍| 国产成人精品一区二区三区四区| 日韩一区二区影院| 三级影片在线观看欧美日韩一区二区 | 亚洲精品中文在线影院| 国产盗摄视频一区二区三区| 日韩午夜激情视频| 日产国产欧美视频一区精品| 欧美日韩精品专区| 亚洲国产精品尤物yw在线观看| 99re这里只有精品首页| 国产精品欧美一区二区三区| 风流少妇一区二区| 中文av字幕一区| 99精品视频在线播放观看| 中文字幕中文字幕一区| 国产精品18久久久久久久久久久久 | 欧美日韩免费在线视频| 亚洲欧美日韩一区二区| 91丨国产丨九色丨pron| 一区二区免费视频| 欧美日韩国产一级| 九色porny丨国产精品| 欧美变态口味重另类| 韩国毛片一区二区三区| 国产精品水嫩水嫩| 色av成人天堂桃色av| 亚洲地区一二三色| 日韩欧美二区三区| 成人av网站在线观看| 亚洲欧美日韩国产中文在线| 欧美又粗又大又爽| 青青草成人在线观看| 欧美本精品男人aⅴ天堂| 国产成人免费视频网站高清观看视频 | 韩国成人在线视频| 久久亚洲影视婷婷| 99久久久久免费精品国产| 一区二区成人在线| 日韩免费视频一区| 国产成人在线视频网站| 一区二区三区四区在线| 91精品国产综合久久香蕉的特点| 麻豆91在线观看| 亚洲欧洲成人精品av97| 在线播放中文一区| 国产乱一区二区| 天天色综合成人网| 国产精品国产三级国产aⅴ无密码| 在线视频一区二区三| 天堂成人国产精品一区| 中文在线资源观看网站视频免费不卡| 欧美最新大片在线看| 韩国女主播一区| 亚洲午夜视频在线| 日本一区二区综合亚洲| 欧美亚洲动漫精品| 东方欧美亚洲色图在线| 首页欧美精品中文字幕| 一色屋精品亚洲香蕉网站| 欧美一区日韩一区| 国产福利91精品一区二区三区| 亚洲天堂2014| 国产日韩欧美综合在线| 5月丁香婷婷综合| 色视频欧美一区二区三区| 蜜桃传媒麻豆第一区在线观看| 国产精品第五页| 精品福利在线导航| 欧美色精品在线视频| 成人黄色电影在线 | 国产欧美日韩三级| 日韩一区二区影院| 欧美日韩高清在线播放| 91色porny蝌蚪| 成人一区二区三区视频在线观看 | 亚洲三级小视频| 国产亚洲精品超碰| 5月丁香婷婷综合| 色婷婷激情一区二区三区| 不卡欧美aaaaa| 精品一区二区久久| 日日夜夜一区二区| 亚洲v日本v欧美v久久精品| 中文字幕一区二区三区蜜月| 国产亚洲精品aa| 久久精品一区四区| 久久蜜桃av一区精品变态类天堂| 91精品国产综合久久久蜜臀粉嫩| 欧美三级欧美一级| 欧美羞羞免费网站| 91久久一区二区| 在线免费观看成人短视频| av一区二区三区在线| 成人高清免费在线播放| 成人国产精品视频| 成人动漫一区二区在线| 精品一区二区三区免费毛片爱| 麻豆国产欧美一区二区三区| 免费欧美日韩国产三级电影| 免费在线一区观看| 精品一区二区三区av| 狠狠色狠狠色综合日日91app| 国产精品 欧美精品| 日本韩国欧美国产| 日韩欧美国产午夜精品| 国产精品理论片| 日韩国产一二三区| 成人sese在线| 56国语精品自产拍在线观看| 国产三级精品在线| 香蕉影视欧美成人| 国产成人日日夜夜| 欧美高清激情brazzers| 国产亚洲一二三区| 午夜欧美在线一二页| 懂色av中文字幕一区二区三区| 欧美在线观看视频一区二区| 日韩精品综合一本久道在线视频| 中文无字幕一区二区三区| 五月天一区二区三区| 成人精品电影在线观看| 91精品在线观看入口| 亚洲人成网站在线| 国产乱人伦精品一区二区在线观看| 国产成人夜色高潮福利影视| 欧美系列日韩一区| 中文在线资源观看网站视频免费不卡| 日日摸夜夜添夜夜添精品视频| 国产美女精品人人做人人爽| 欧美精品一卡二卡| 亚洲欧美日韩中文字幕一区二区三区 | 欧美精品v国产精品v日韩精品| 欧美激情一区在线| 麻豆精品新av中文字幕| 日本久久电影网| 中文欧美字幕免费| 国产在线一区观看| 欧美一区二区三区免费在线看| 亚洲免费观看在线观看| 丁香婷婷综合激情五月色| 精品国产精品网麻豆系列| 亚洲成人免费视频| 色悠悠久久综合| 国产精品家庭影院| 国产成人在线看| 久久综合给合久久狠狠狠97色69| 图片区小说区区亚洲影院| 色综合一个色综合亚洲| 国产精品萝li| 国产a视频精品免费观看| 久久综合色鬼综合色| 国内精品久久久久影院色| 日韩一区二区免费在线电影| 亚洲二区在线观看| 欧美亚洲一区三区| 亚洲午夜免费福利视频| 91福利在线导航| 亚洲444eee在线观看| 欧美无乱码久久久免费午夜一区| 樱花草国产18久久久久| 91一区二区在线观看| 自拍偷拍亚洲综合|