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

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

?? vdkcmd.c

?? Virtual Disk Driver
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*	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);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产免费久久综合| 99久久国产综合精品女不卡| 国产69精品久久久久777| 色天天综合久久久久综合片| 欧美日本国产视频| 波多野结衣91| 国产91精品露脸国语对白| 亚洲午夜精品一区二区三区他趣| 久久精品欧美日韩精品| 国产高清久久久久| 91在线观看一区二区| 夜夜夜精品看看| 成人午夜视频免费看| 777奇米四色成人影色区| 亚洲日本va午夜在线影院| 国产福利一区二区三区| 欧美一区二区三区色| 一区二区在线观看av| jlzzjlzz亚洲女人18| 久久精品亚洲精品国产欧美| 捆绑变态av一区二区三区 | 亚洲精品成人精品456| 99久久婷婷国产精品综合| 亚洲色图制服诱惑| 国产一区二区三区| 欧美一级午夜免费电影| 天天av天天翘天天综合网| 一本高清dvd不卡在线观看| 国产精品麻豆久久久| 懂色av一区二区三区蜜臀| 久久精品视频一区| 国产成人在线观看免费网站| 欧美精品一区二区久久久| 精品一区二区三区在线观看国产| 欧美一区二区视频观看视频| 日本亚洲最大的色成网站www| 欧美肥大bbwbbw高潮| 午夜欧美一区二区三区在线播放| 欧美日韩中字一区| 亚洲一区二区高清| 欧美日韩国产一二三| 中文字幕不卡三区| 久久99国产精品免费| 中文字幕第一区二区| 日韩精品一区二区三区在线 | 亚洲蜜桃精久久久久久久| 国产九色精品成人porny| 久久午夜电影网| 国产一区二区三区精品视频| 久久精品欧美日韩精品| 99久久久久免费精品国产| 亚洲图片另类小说| 欧美视频一区二区三区四区| 成人黄色在线看| 亚洲日本欧美天堂| 欧美日韩在线精品一区二区三区激情 | 日韩三级在线免费观看| 久久一留热品黄| 秋霞午夜鲁丝一区二区老狼| 精品日韩一区二区三区| 成人污视频在线观看| 一级中文字幕一区二区| 日韩视频一区二区在线观看| 国模套图日韩精品一区二区| 国产精品福利一区二区三区| 欧美日韩精品高清| 久久 天天综合| 亚洲色图欧美偷拍| 日韩一级黄色片| 91视频一区二区三区| 视频精品一区二区| 亚洲国产精品成人综合 | 激情都市一区二区| 最好看的中文字幕久久| 欧美高清视频一二三区| 日韩欧美另类在线| av毛片久久久久**hd| 免费黄网站欧美| 国产精品夫妻自拍| 精品久久久久久最新网址| 视频一区在线视频| 9191久久久久久久久久久| 高清国产一区二区三区| 婷婷一区二区三区| 国产精品毛片无遮挡高清| 欧美一区二区三区视频| 色哟哟欧美精品| 国产精品99久久久久久似苏梦涵| 天天影视网天天综合色在线播放| 国产精品欧美经典| 久久综合资源网| 91精品综合久久久久久| 色女孩综合影院| 国产精品 日产精品 欧美精品| 日韩av电影免费观看高清完整版| 综合久久综合久久| 国产欧美精品国产国产专区| 日韩视频一区二区三区| 欧美丝袜丝nylons| 93久久精品日日躁夜夜躁欧美| 国产一区在线视频| 麻豆精品久久精品色综合| 午夜久久久影院| 亚洲一二三区视频在线观看| 日韩一区在线免费观看| 亚洲国产精品v| 中文字幕乱码久久午夜不卡| 2欧美一区二区三区在线观看视频| 欧美二区三区91| 欧美老年两性高潮| 欧美日韩亚洲综合在线 | 国产精品福利一区二区三区| 久久亚洲综合av| 欧美一区二区三区四区久久| 91精品欧美综合在线观看最新| 欧美日韩一区二区三区视频| 91浏览器打开| 91精品办公室少妇高潮对白| 91麻豆高清视频| 91麻豆产精品久久久久久 | 欧美日韩一区二区三区在线| 成人一区二区视频| 色婷婷激情久久| 成人18精品视频| 91污片在线观看| 色噜噜狠狠色综合欧洲selulu| 成人动漫一区二区在线| 99久久免费视频.com| 日本道色综合久久| 欧美日韩极品在线观看一区| 91精品国产综合久久福利软件| 日韩一级完整毛片| 国产婷婷一区二区| 亚洲视频免费观看| 亚洲国产精品麻豆| 免费观看30秒视频久久| 国产精品一品二品| av亚洲精华国产精华精华 | 一区二区三区四区蜜桃| 一区二区三区欧美在线观看| 天堂成人免费av电影一区| 美国一区二区三区在线播放| 国产一区美女在线| 91蝌蚪国产九色| 制服丝袜中文字幕一区| 国产不卡视频一区| 亚洲国产日韩综合久久精品| 国产欧美精品在线观看| 国产精品国产成人国产三级| 亚洲成人你懂的| 国内精品久久久久影院薰衣草| 波多野结衣在线aⅴ中文字幕不卡| 色综合中文综合网| 国产乱人伦精品一区二区在线观看 | 亚洲精品久久久久久国产精华液| 天天色天天爱天天射综合| 韩日欧美一区二区三区| 色婷婷狠狠综合| 精品裸体舞一区二区三区| 亚洲免费观看高清完整版在线观看熊 | 欧美v国产在线一区二区三区| 五月天一区二区三区| 亚洲欧美在线aaa| 日本va欧美va精品发布| 成人av免费观看| 91精品国产色综合久久不卡电影| 中文字幕欧美国产| 奇米色777欧美一区二区| 99久久国产免费看| 久久精品在线观看| 日韩高清一区在线| 色婷婷综合久久久久中文一区二区| 日韩精品一区二区三区四区视频| 亚洲综合偷拍欧美一区色| 国产精品小仙女| 欧美电影免费观看高清完整版在 | 国产精品人妖ts系列视频| 日韩精品国产精品| 高清免费成人av| 懂色av中文字幕一区二区三区| 欧美一a一片一级一片| 日韩不卡免费视频| 国产精品久久久久久福利一牛影视| 亚洲一区二区在线免费观看视频 | 欧美亚洲一区二区在线观看| 国产视频一区在线观看| 蜜芽一区二区三区| 91精品国产色综合久久不卡电影 | 亚洲欧洲av在线| 国产成人aaaa| 久久伊人蜜桃av一区二区| 六月丁香综合在线视频| 欧美一级日韩一级| 日韩av一区二区三区四区| 欧美日韩一区二区三区高清| 亚洲午夜三级在线| 欧美日韩国产首页| 亚洲国产成人av| 国产福利一区二区三区在线视频| 国产精品久久久久久久第一福利|