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

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

?? vdkcmd.c

?? Virtual Disk Driver
?? C
?? 第 1 頁 / 共 3 頁
字號:
			return -1;		}		if (!isdigit(**args)) {			PrintMessage(MSG_INVALID_PART, *args);			return -1;		}		part_number = atol(*(args++));	}	else if (isalpha(**args)) {		drive_letter = (char)toupper(**(args++));	}	else {		PrintMessage(MSG_UNKNOWN_OPTION, *args, "ULINK");		return -1;	}	if (*args) {		PrintMessage(MSG_USAGE_ULINK);		return -1;	}	if (!drive_letter) {		// disk, part are specified		ret = VdkGetDriveLetter(disk_number, part_number, &drive_letter);		if (ret != ERROR_SUCCESS) {			PrintMessage(MSG_GET_LINK_NG, disk_number, part_number);			printf("%s\n", VdkStatusStr(ret));			return -1;		}		if (!isalpha(drive_letter)) {			PrintMessage(MSG_GET_LINK_NG, disk_number, part_number);			printf("%s\n", VdkStatusStr(ERROR_FILE_NOT_FOUND));			return -1;		}	}	if (isalpha(drive_letter)) {		ret = VdkDelDriveLetter(drive_letter);		if (ret != ERROR_SUCCESS) {			PrintMessage(MSG_UNLINK_NG, drive_letter);			printf("%s\n", VdkStatusStr(ret));			return -1;		}	}	PrintMessage(MSG_UNLINK_OK, drive_letter);	return 0;}////	Print image file information//	Command Line Parameters://		disk number or drive letter//int Image(char **args){	ULONG	disk_number;	ULONG	max_disk;	DWORD	ret;	//	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;	}	ret = VdkGetDriverInfo(NULL, &max_disk, NULL, NULL, NULL);	if (ret != ERROR_SUCCESS) {		PrintMessage(MSG_GET_CONFIG_NG);		printf("%s\n", VdkStatusStr(ret));		return -1;	}	if (*args) {		if (isdigit(**args)) {			disk_number = atol(*args);		}		else if (isalpha(**args)) {			ret = GetDiskFromDrive(**args, &disk_number);			if (ret != ERROR_SUCCESS) {				PrintMessage(MSG_RESOLVE_LINK_NG, **args);				return -1;			}		}		else {			PrintMessage(MSG_INVALID_DISK, *args);			return -1;		}		if (disk_number >= max_disk) {			PrintMessage(MSG_INVALID_DISK, *args);			return -1;		}		max_disk = disk_number;	}	else {		disk_number = 0;	}	do {		HANDLE hDisk;		PVDK_OPEN_FILE_INFO	file_info;		PrintMessage(MSG_VIRTUAL_DISK, disk_number);		hDisk = VdkOpenDevice(disk_number, 0);		if (hDisk == INVALID_HANDLE_VALUE) {			ret = VdkLastError();			PrintMessage(MSG_GET_IMAGE_NG, disk_number);			printf("%s\n", VdkStatusStr(ret));			continue;		}		ret = VdkCheckDeviceState(hDisk, 0, 0);		if (ret != ERROR_SUCCESS) {			if (ret == ERROR_BUSY) {				PrintMessage(MSG_DEVICE_BUSY);				printf("\n");			}			else if (ret == ERROR_NOT_READY) {				PrintMessage(MSG_IMAGE_NONE);				printf("\n");			}			else {				printf("%s\n\n", VdkStatusStr(ret));			}			CloseHandle(hDisk);			continue;		}		ret = VdkGetFileInfo(hDisk, 0, &file_info);		if (ret != ERROR_SUCCESS) {			CloseHandle(hDisk);			PrintMessage(MSG_GET_IMAGE_NG, disk_number);			printf("%s\n", VdkStatusStr(ret));			continue;		}		//	print image file information		PrintFileInfo(file_info);		if (!file_info) {			CloseHandle(hDisk);			continue;		}		if (!file_info->DiskType) {			VdkFreeMem(file_info);			CloseHandle(hDisk);			continue;		}		//		//	Print partition information		//		PrintMessage(MSG_PARTITION_HEADER);		ret = VdkListPartitions(NULL, hDisk, file_info->Capacity, PartList_Callback, (PVOID)disk_number);		VdkFreeMem(file_info);		CloseHandle(hDisk);		if (ret != ERROR_SUCCESS) {			PrintMessage(MSG_GET_PART_NG);			printf("%s\n", VdkStatusStr(ret));			continue;		}		printf("\n");	}	while (++disk_number < max_disk);	return 0;}////	Print usage help//	Command Line Parameters://		(optional) command//int	Help(char **args){	DWORD msg = MSG_HELP_GENERAL;	if (args && *args) {		int idx = 0;		while (Commands[idx].cmd) {			if (_stricmp(*args, Commands[idx].cmd) == 0) {				msg = Commands[idx].helpmsg;				break;			}			idx++;		}		if (!Commands[idx].cmd) {			PrintMessage(MSG_UNKNOWN_COMMAND, *args);			msg = MSG_HELP_HELP;		}	}	PrintMessage(msg);	return 0;}////	Print device information//int	Device(char **args){	ULONG device_num;	PVDK_DEVICE_INFO device_info;	UNREFERENCED_PARAMETER(args);	if (VdkGetDeviceList(&device_num, &device_info) != ERROR_SUCCESS) {		return -1;	}	while (device_num--) {		printf("Device Type  : %s\n", (device_info[device_num].DeviceType == VDK_DEVICE_DISK) ? "DISK" : "PART");		printf("Device Name  : %s\n", device_info[device_num].DeviceName);		printf("Symbolic Link: %s\n", device_info[device_num].SymbolicLink);		printf("Reference    : %lu\n", device_info[device_num].ReferenceCount);		printf("\n");	}	VdkFreeMem(device_info);	return 0;}#ifdef _DEBUGstruct _traceflags {	char *name;	ULONG value;}flagtable[] = {	"WARN",		VDKWARN,	"INFO",		VDKINFO,	"OPEN",		VDKOPEN,	"CLOSE",	VDKCLOSE,	"READ",		VDKREAD,	"WRITE",	VDKWRITE,	"DISPATCH",	VDKDISPATCH,	"IOCTL",	VDKIOCTL,	"UPDATE",	VDKUPDATE,	"CREATE",	VDKCREATE,	"DELETE",	VDKDELETE,	"FORMAT",	VDKFORMAT,	"SERVER",	VDKSERVER,	"CLIENT",	VDKCLIENT,	NULL, 0};ULONG ParseFlag(PCHAR name){	int idx;	if (!_stricmp(name, "ALL")) {		return 0xffffffff;	}	idx = 0;	while (flagtable[idx].name) {		if (!_stricmp(name, flagtable[idx].name)) {			return flagtable[idx].value;		}		idx++;	}	return 0;}int	Trace(char **args){	ULONG	flags, changed;	int idx;	flags = VdkTraceFlags(NULL);	changed = flags;	while (*args) {		if (**args == '-') {			changed &= ~(ParseFlag(*args + 1));		}		else if (**args == '+') {			changed |= ParseFlag(*args + 1);		}		else {			changed |= ParseFlag(*args);		}		args++;	}	if (changed != flags) {		flags = VdkTraceFlags(&changed);	}	printf("Trace flag is : 0x%08x\n", flags);	printf("Enabled : ");	idx = 0;	while (flagtable[idx].name) {		if ((flagtable[idx].value & flags) == flagtable[idx].value) {			printf("%s ", flagtable[idx].name);		}		idx++;	}	printf("\nDisabled: ");	idx = 0;	while (flagtable[idx].name) {		if ((flagtable[idx].value & flags) != flagtable[idx].value) {			printf("%s ", flagtable[idx].name);		}		idx++;	}	printf("\n");	return 0;}#endif _DEBUG////	Get disk number from a drive letter//DWORD GetDiskFromDrive(CHAR drive, PULONG disk){	TCHAR	dos_device[] = " :";	TCHAR	device_name[MAX_DEVNAME_LEN], dos_name[MAX_PATH];	DWORD	ret;	dos_device[0] = drive;	if (!QueryDosDevice(dos_device, dos_name, sizeof(dos_name))) {		return GetLastError();	}	ret = VdkGetDriverInfo(NULL, disk, NULL, NULL, NULL);	if (ret != ERROR_SUCCESS) {		return ret;	}	while ((*disk)--) {		ret = VdkGetDeviceName((*disk), (ULONG)-1, device_name);		if (ret != ERROR_SUCCESS) {			return ret;		}		if (!_strnicmp(dos_name, device_name, strlen(device_name))) {			return ERROR_SUCCESS;		}	}	return ERROR_FILE_NOT_FOUND;}////	Print image file information//void PrintFileInfo(PVDK_OPEN_FILE_INFO file_info){	ULONG total_sectors;	PCHAR name_pos;	ULONG idx;	if (!file_info) {		PrintMessage(MSG_IMAGE_NONE);		printf("\n");		return;	}	//	Virtual disk access type	if (file_info->DiskType) {		PrintMessage(MSG_ACCESS_TYPE);		switch (file_info->DiskType) {		case VDK_DISKTYPE_WRITABLE:			PrintMessage(MSG_ACCESS_RW);			break;		case VDK_DISKTYPE_READONLY:			PrintMessage(MSG_ACCESS_RO);			break;		case VDK_DISKTYPE_WRITEBLOCK:			PrintMessage(MSG_ACCESS_WB);			break;		}	}	PrintMessage(MSG_DISK_CAPACITY,		file_info->Capacity,		file_info->Capacity / 2048);	if (file_info->Cylinders &&		file_info->Tracks &&		file_info->Sectors) {		PrintMessage(MSG_DISK_GEOMETRY,			file_info->Cylinders,			file_info->Tracks,			file_info->Sectors);	}	PrintMessage(MSG_DISK_FILES,		file_info->FilesTotal);	PrintMessage(MSG_FILE_HEADER);	total_sectors = 0;	name_pos = (PCHAR)&(file_info->Files[file_info->FilesTotal]);	for (idx = 0; idx < file_info->FilesTotal; idx++) {		if (total_sectors == 0) {			printf(" -------  -------  ----\n");		}		switch (file_info->Files[idx].FileType) {		case VDK_FILETYPE_NONE:			printf("  NONE ");			break;		case VDK_FILETYPE_FLAT:			printf("  FLAT ");			break;		case VDK_FILETYPE_COWD:			printf("  COWD ");			break;		case VDK_FILETYPE_VMDK:			printf("  VMDK ");			break;		default:			printf("  ???  ");			break;		}		printf("  %8lu  %s\n",			file_info->Files[idx].Capacity,			name_pos);		name_pos += file_info->Files[idx].NameLength;		total_sectors += file_info->Files[idx].Capacity;		if (total_sectors == file_info->Capacity) {			total_sectors = 0;		}	}	printf("\n");}////	Confirms unmount retry//DWORD Retry_Callback(PVOID param, DWORD err){	printf("\n");	PrintMessage(MSG_DISMOUNT_NG);	printf("%s\n", VdkStatusStr(err));	if (param) {		// quiet / force mode		return FALSE;	}	else {		// normal mode		PrintMessage(MSG_DRIVE_IN_USE);		return (InputChar(MSG_PROMPT_RETRY, "yn") == 'y');	}}////	Confirms unmount continue//DWORD Continue_Callback(PVOID param, DWORD err){	UNREFERENCED_PARAMETER(err);	if ((ULONG)param == CLOSE_QUIET) {		// quiet mode		return FALSE;	}	else if ((ULONG)param == CLOSE_FORCE) {		// force mode		PrintMessage(MSG_CLOSE_FORCED);		return TRUE;	}	else {		// prompt mode		printf("\n");		PrintMessage(MSG_FORCING_WARN);		return (InputChar(MSG_PROMPT_CONTINUE, "yn") == 'y');	}}////	VdkListPartitions callback//	called for each partition item//void PartList_Callback(PPARTITION_ITEM pitem, PVOID param){	CHAR drive[] = " :";	if ((ULONG)param != (ULONG)-1) {		VdkGetDriveLetter(			(ULONG)param,			pitem->idx,			&drive[0]);	}	if (!isalpha(drive[0])) {		strcpy(drive, "  ");	}	if (pitem->idx) {		PCHAR name = GetPartitionTypeName(pitem->type);		printf(" %s  %2d%c  %12lu   %8lu (%6lu MB)  %02xh:%s\n",			drive,			pitem->idx,			pitem->num > 4 ? '*' : ' ',			pitem->offset,			pitem->length,			pitem->length / 2048,			pitem->type,			name ? name : "");	}	else {		printf(" %s  %2d%c  %12lu   %8lu (%6lu MB)  %s\n",			drive,			pitem->idx,			pitem->num > 4 ? '*' : ' ',			pitem->offset,			pitem->length,			pitem->length / 2048,			pitem->fsname);	}}////	VdkGetDriveLayout callback//	called for each recognized partition item//void Assign_Callback(PPARTITION_ITEM pitem, PVOID param){	PASSIGN_PARAM assign = (PASSIGN_PARAM)param;	VDKSTAT ret;	if ((assign->part_number == (ULONG)-1 &&		IsPartitionMountable(pitem->type, assign->read_only)) ||		assign->part_number == pitem->idx) {		CHAR letter = ChooseDriveLetter();		if (!isalpha(letter)) {			PrintMessage(MSG_DRIVE_FULL);			goto print_info;		}		if (assign->drive_letters &&			isalpha(*(assign->drive_letters)) &&			*(assign->drive_letters) > letter) {			letter = *((assign->drive_letters)++);		}		ret = VdkSetDriveLetter(			assign->disk_number,			pitem->idx,			letter);		if (ret != ERROR_SUCCESS) {			PrintMessage(MSG_LINK_NG, letter, assign->disk_number, pitem->idx);			printf("%s\n", VdkStatusStr(ret));		}	}print_info:	//	//	print partition information	//	PartList_Callback(pitem, (PVOID)(assign->disk_number));}////	Check if current user belongs to Administrators group//BOOL IsUserAdmin(){	DWORD	i, dwSize = 0;	HANDLE	hToken;	PTOKEN_GROUPS pGroupInfo;	BYTE	sidBuffer[100];	PSID	pSID = (PSID)&sidBuffer;	SID_IDENTIFIER_AUTHORITY SIDAuth = SECURITY_NT_AUTHORITY;	BOOL	ret = FALSE;	// Open a handle to the access token for the calling process.	if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken)) {		return FALSE;	}	// Call GetTokenInformation to get the buffer size.	if(!GetTokenInformation(hToken, TokenGroups, NULL, dwSize, &dwSize)) {		if(GetLastError() != ERROR_INSUFFICIENT_BUFFER ) {			return FALSE;		}	}	// Allocate the buffer.	pGroupInfo = (PTOKEN_GROUPS)GlobalAlloc(GPTR, dwSize);	// Call GetTokenInformation again to get the group information.	if (!GetTokenInformation(hToken, TokenGroups, pGroupInfo, dwSize, &dwSize)) {		goto cleanup;	}	// Create a SID for the BUILTIN\Administrators group.	if (!AllocateAndInitializeSid(		&SIDAuth, 2, SECURITY_BUILTIN_DOMAIN_RID,		DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &pSID)) {		goto cleanup;	}	// Loop through the group SIDs looking for the administrator SID.	for (i = 0; i < pGroupInfo->GroupCount; i++) {		if (EqualSid(pSID, pGroupInfo->Groups[i].Sid)) {			ret = TRUE;			break;		}	}cleanup:	if (pSID) {		FreeSid(pSID);	}	if (pGroupInfo) {		GlobalFree(pGroupInfo);	}	return ret;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费视频视频| 国产精品一区二区久久精品爱涩| 日韩午夜在线观看视频| 色国产精品一区在线观看| 国产盗摄一区二区| 韩国成人福利片在线播放| 久久99精品久久久久| 久久超级碰视频| 美腿丝袜亚洲三区| 麻豆国产精品视频| 国产自产v一区二区三区c| 老鸭窝一区二区久久精品| 日本视频在线一区| 国内成人自拍视频| 粗大黑人巨茎大战欧美成人| 成人av免费在线播放| 成人亚洲一区二区一| 国产精品一区免费视频| 高清国产一区二区| 色综合色综合色综合| 欧美性猛交xxxxxx富婆| 91精品国产美女浴室洗澡无遮挡| 日韩一区二区中文字幕| 久久亚洲精品小早川怜子| 国产精品盗摄一区二区三区| 一区二区三区欧美亚洲| 免费成人小视频| 国产精品中文有码| 色综合色狠狠综合色| 69堂亚洲精品首页| 国产日韩欧美精品综合| 一区二区三区自拍| 精品影视av免费| 一本到一区二区三区| 日韩视频免费观看高清在线视频| 日本一区二区视频在线观看| 亚洲综合图片区| 国产精品影音先锋| 欧美日韩成人综合在线一区二区| 久久综合国产精品| 亚洲不卡在线观看| 成人开心网精品视频| 欧美一区二区精品在线| 最新国产成人在线观看| 精品在线观看免费| 欧美午夜一区二区| 中文字幕的久久| 美女一区二区在线观看| 91久久精品一区二区三| 久久久久9999亚洲精品| 亚洲国产另类精品专区| 国产成人午夜精品5599| 欧美另类高清zo欧美| 国产精品狼人久久影院观看方式| 男人的天堂亚洲一区| 色综合久久久网| 国产日韩精品久久久| 蜜臀精品久久久久久蜜臀| 91在线视频网址| 久久久99精品免费观看| 蜜臀av性久久久久av蜜臀妖精 | 色婷婷久久一区二区三区麻豆| 日韩亚洲欧美在线| 亚洲成人av资源| 91豆麻精品91久久久久久| 中文字幕永久在线不卡| 国产v综合v亚洲欧| 国产日产欧产精品推荐色 | 国产乱码字幕精品高清av| 欧美日韩国产综合视频在线观看| 中文字幕一区二区三区视频| 国产精品一区二区在线观看不卡 | 不卡的电影网站| 国产清纯白嫩初高生在线观看91| 国产在线精品不卡| 精品国产乱码久久久久久浪潮 | 国产乱妇无码大片在线观看| 日韩免费看的电影| 麻豆一区二区三| 日韩一区二区三区电影| 日本美女一区二区| 日韩一级片在线播放| 蜜桃传媒麻豆第一区在线观看| 欧美日韩和欧美的一区二区| 日韩av中文字幕一区二区三区| 欧美日韩国产一二三| 日本不卡视频在线| 精品第一国产综合精品aⅴ| 国模冰冰炮一区二区| 国产丝袜欧美中文另类| 成人av免费在线观看| 一区二区久久久久久| 欧美一区二区三区公司| 捆绑变态av一区二区三区| 久久蜜臀精品av| 99国产一区二区三精品乱码| 夜夜精品浪潮av一区二区三区| 欧美日韩国产小视频| 国内精品视频666| 国产精品成人免费在线| 欧美日韩午夜在线视频| 激情都市一区二区| 亚洲欧洲精品成人久久奇米网| 在线视频中文字幕一区二区| 日本成人在线一区| 国产精品毛片无遮挡高清| 91网址在线看| 久久99久久久欧美国产| 国产精品网站一区| 欧美精品日日鲁夜夜添| 国产成人av一区二区| 夜夜精品视频一区二区| 久久久久国产精品免费免费搜索| 色国产精品一区在线观看| 激情av综合网| 亚洲成av人片观看| 中文字幕中文字幕一区二区| 欧美猛男超大videosgay| 国产成人综合亚洲91猫咪| 五月天欧美精品| 综合激情网...| 久久夜色精品国产噜噜av| 欧美午夜精品理论片a级按摩| 国产在线精品一区二区不卡了 | 亚洲一区影音先锋| 久久蜜桃一区二区| 欧美精品日韩一区| 91网上在线视频| 国产精品综合久久| 婷婷中文字幕一区三区| 最新国产成人在线观看| 国产亚洲精品中文字幕| 日韩一区二区三区视频| 欧美亚洲一区二区在线观看| caoporm超碰国产精品| 国产在线不卡一区| 蜜芽一区二区三区| 日日欢夜夜爽一区| 一区二区三区精品视频| 国产精品久久久久久久久快鸭| 久久青草国产手机看片福利盒子| 欧美日韩一级片在线观看| 成人激情av网| 国产成人aaa| 国产在线精品一区二区夜色| 亚洲国产日韩综合久久精品| 亚洲精品国产精品乱码不99 | 色久综合一二码| 成人精品小蝌蚪| 成人一区二区在线观看| 国产精品一区二区久久不卡| 国产曰批免费观看久久久| 久久疯狂做爰流白浆xx| 久久激情五月激情| 麻豆一区二区99久久久久| 精品无人区卡一卡二卡三乱码免费卡 | 日韩美女视频一区| 国产精品国产三级国产aⅴ入口 | 国产91精品一区二区麻豆网站| 免费av网站大全久久| 日本91福利区| 狠狠色综合播放一区二区| 国产精品亚洲一区二区三区在线| 韩国av一区二区| 不卡av电影在线播放| 91免费版在线| 欧美日韩高清一区二区| 欧美一区二区三区系列电影| 精品国产免费人成电影在线观看四季| 欧美mv日韩mv国产网站app| 日韩视频一区二区三区在线播放| 欧美电影免费提供在线观看| 久久精品人人做人人爽人人| 国产精品无圣光一区二区| 中文字幕一区视频| 亚洲成a人v欧美综合天堂下载| 视频一区视频二区在线观看| 老司机一区二区| 99精品国产91久久久久久 | 国产中文字幕精品| 成人激情小说乱人伦| 在线观看欧美精品| 日韩丝袜美女视频| 国产精品色哟哟| 石原莉奈在线亚洲二区| 国产盗摄女厕一区二区三区 | 亚洲v精品v日韩v欧美v专区 | 成人av电影在线| 欧美色老头old∨ideo| 久久综合九色欧美综合狠狠 | 日韩视频免费观看高清完整版在线观看| 欧美成人精品二区三区99精品| 中文字幕色av一区二区三区| 婷婷亚洲久悠悠色悠在线播放| 国产成人在线网站| 欧美精品18+| 日韩理论片一区二区| 久久丁香综合五月国产三级网站| 91在线观看高清| 久久久久久久久伊人|