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

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

?? defrag.c

?? 磁盤碎片整理程序源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
		sprintf(fileName, "%C:%s", drive+'A', argument );
	else
		strcpy(fileName, argument );

	printf("\nClusters for file: %s\n", fileName );

	//
	// Open the file
	//
	sourceFile = CreateFile( fileName, GENERIC_READ, 
					FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 
					FILE_FLAG_NO_BUFFERING, 0 );
	if( sourceFile == INVALID_HANDLE_VALUE ) {
		printf("Failed to open file: ");
		PrintWin32Error( GetLastError() );
		return;
	}

	//
	// Start dumping the mapping information. Go until we hit the end of the
	// file.
	//
	startVcn = 0;
	fileMappings = (PGET_RETRIEVAL_DESCRIPTOR) FileMap;
	while( !(status = NtFsControlFile( sourceFile, NULL, NULL, 0, &ioStatus,
						FSCTL_GET_RETRIEVAL_POINTERS,
						&startVcn, sizeof( startVcn ),
						fileMappings, FILEMAPSIZE * sizeof(LARGE_INTEGER) ) ) ||
			 status == STATUS_BUFFER_OVERFLOW ||
			 status == STATUS_PENDING ) {

		// 
		// If the operation is pending, wait for it to finish
		//
		if( status == STATUS_PENDING ) {
			
			WaitForSingleObject( sourceFile, INFINITE ); 

			//
			// Get the status from the status block
			//
			if( ioStatus.Status != STATUS_SUCCESS && 
				ioStatus.Status != STATUS_BUFFER_OVERFLOW ) {

				printf("Enumerate file clusters: ");
				PrintNtError( ioStatus.Status );
				return;
			}
		}

		//
		// Loop through the buffer of number/cluster pairs, printing them
		// out.
		//
		startVcn = fileMappings->StartVcn;
		for( i = 0; i < (ULONGLONG) fileMappings->NumberOfPairs; i++ ) {

			//
			// See if we should continue
			//
			if( !PauseOutput( ++lines ) ) {
				
				return;
			}	 

			//
			// On NT 4.0, a compressed virtual run (0-filled) is 
			// identified with a cluster offset of -1
			//
			if( fileMappings->Pair[i].Lcn == LLINVALID ) {
				printf("   VCN: %I64d VIRTUAL LEN: %I64d\n",
							startVcn, fileMappings->Pair[i].Vcn - startVcn ); 
			} else {
				printf("   VCN: %I64d LCN: %I64d LEN: %I64d\n",
							startVcn, fileMappings->Pair[i].Lcn, 
							fileMappings->Pair[i].Vcn - startVcn );
			}
			startVcn = fileMappings->Pair[i].Vcn;
		}

		//
		// If the buffer wasn't overflowed, then we're done
		//
		if( !status ) break;
	}
	CloseHandle( sourceFile );

	//
	// Print any error code
	//
	printf("Enumerate file clusters: ");
	PrintNtError( status );
}

//--------------------------------------------------------------------
//
// MoveClusterUsage
//
// Prints the syntax of the demonstration program's move file command.
//
//--------------------------------------------------------------------
void MoveClusterUsage()
{
	printf("\nMove File's syntax is:\n   m [filename] [fileoffset] [target] [numclusters]\n\n");
	printf("Example:\n   m c:\\foo\\bar 5 3455 10\n");
	printf("   c:\\foo\\bar       File to move\n");
	printf("   5                Start offset (in clusters) of the cluster in file to move\n");
	printf("   3455             Target cluster on drive\n");
	printf("   10               Number of clusters to move\n");
	printf("\n   This would direct 10 clusters, starting at offset 5 clusters\n"
		"   in the file, to be moved to logical cluster 3455 on the volume.\n\n");
	return;
}

//--------------------------------------------------------------------
//
// MoveCluster
//
// This uses the FSCT_MOVE_FILE interface to move the clusters of a
// file specified by the user as arguments. MoveFile requires a 
// file handle, an offset within the file, the number of sectors of
// the file to move, and the target cluster on the drive to move the
// clusters to.
//
//--------------------------------------------------------------------
void MoveCluster( int drive, char *argument )
{
	DWORD						status;
	IO_STATUS_BLOCK				ioStatus;
	char						*argptr;
	HANDLE						sourceFile;
	char						fileName[MAX_PATH];
	LARGE_INTEGER				startVcn, targetLcn;
	DWORD						numClusters;
	MOVEFILE_DESCRIPTOR			moveFile;

	//
	// First, we have to extract the file name
	//
	argptr = argument;
	while( *argptr && *argptr != ' ' ) argptr++;
	if( !*argptr ) {

		MoveClusterUsage();
		return; 
	}

	//
	// Make the name into a real pathname
	//
	*argptr = 0;
	if( strlen( argument ) > 1 && argument[0] != '\\' &&
		argument[0] != 'A'+drive &&
		argument[0] != 'a'+drive ) 
		sprintf(fileName, "%C:\\%s", drive+'A', argument );
	else if( strlen( argument ) > 1 && argument[0] == '\\') 
		sprintf(fileName, "%C:%s", drive+'A', argument );
	else
		strcpy(fileName, argument );

	// 
	// Get numeric parameters
	//
	argument = argptr+1;
	if( sscanf( argument, " %I64d %I64d %d ", &startVcn, &targetLcn, &numClusters ) != 3) {

		MoveClusterUsage();
		return;
	}
	
	//
	// Tell user what we're going to try
	//
	printf("\nMoving file %s:\n", fileName );
	printf("   Start Offset: %I64d\n", startVcn );
	printf("   Number of Clusters: %d\n", numClusters );
	printf("   Target Cluster: %I64d\n", targetLcn );

	//
	// Open the file
	//
	sourceFile = CreateFile( fileName, GENERIC_READ, 
					FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 
					FILE_FLAG_NO_BUFFERING, 0 );
	if( sourceFile == INVALID_HANDLE_VALUE ) {
		printf("Failed to open file: ");
		PrintWin32Error( GetLastError() );
		return;
	}

	//
	// Setup movefile descriptor and make the call
	//
	moveFile.FileHandle = sourceFile;
	moveFile.StartVcn = startVcn;
	moveFile.TargetLcn = targetLcn;
	moveFile.NumVcns = numClusters;

	status = NtFsControlFile( VolumeHandle, NULL, NULL, 0, &ioStatus,
						FSCTL_MOVE_FILE,
						&moveFile, sizeof( moveFile ),
						NULL, 0 );

	// 
	// If the operation is pending, wait for it to finish
	//
	if( status == STATUS_PENDING ) {
		
		WaitForSingleObject( sourceFile, INFINITE ); 

		status = ioStatus.Status;
	}

	//
	// Print status
	//
	printf("Move cluster status: ");
	PrintNtError( status );
}

//--------------------------------------------------------------------
//
// ExtractCommand
//
// Given a command line, searches for 1 character command, and then
// returns a pointer to first non-whitespace following.
//
//--------------------------------------------------------------------
char ExtractCommand( char *command, char **argument )
{
	char	cmdChar;

	//
	// Look for the command character
	//
	while( *command && *command == ' ') command++;

	if( !*command) return (char) 0;

	cmdChar = *command;

	command++;

	//
	// Now look for argument
	//
	while( *command && *command == ' ' ) command++;
	*argument = command;

	return cmdChar;
}


//--------------------------------------------------------------------
//
// main
//
// Process simple commands for enumerating the clusters of a file,
// reading the volume bitmap, and moving a cluster of a particular 
// file.
//
//--------------------------------------------------------------------
int main( int argc, char *argv[])
{
	DWORD						status;
	int							drive;
	char						command[256];
	char						*argument;
	char						cmdChar;

	//
	// Get the drive to open off the command line
	//
	if( argc != 2) {
		printf("Usage: %s <drive letter>\n", argv[0] );
		exit(1);
	}

	printf("\nNT 4.0 Defragmentation Demonstration Program V1.0\n");
	printf("Copyright (C) 1997 Mark Russinovich\n");
	printf("http://www.ntinternals.com\n\n");

	if( argv[1][0] >= 'a' && argv[1][0] <= 'z' ) {
		drive = argv[1][0] - 'a';
	} else if( argv[1][0] >= 'A' && argv[1][0] <= 'Z' ) {
		drive = argv[1][0] - 'A';
	} else if( argv[1][0] == '/' ) {
		printf("Usage: %s <drive letter>\n", argv[0] );
		exit(1);
	} else {
		printf("illegal drive: %c\n", argv[1][0] );
		exit(1);
	}

	//
	// Get the NtFsControlFile entry point
	//
	if( !(NtFsControlFile = (void *) GetProcAddress( GetModuleHandle("ntdll.dll"),
			"NtFsControlFile" )) ) {

		printf("Could not find NtFsControlFile entry point in NTDLL.DLL\n");
		exit(1);
	}

	//
	// Open the volume
	//
	printf("Opening volume: %c\n", drive+'A' );
	status = OpenVolume(drive);
	printf("Open status: ");
	PrintWin32Error( status );
	if( status != ERROR_SUCCESS ) {

		printf("Exiting.\n");
		exit(0);
	}

	//
	// Get commands 
	//
	printf("Enter commands ('?' for help):\n\n");
	while(1) {

		printf(": ");
		fflush(stdout );
		gets( command );

		cmdChar = ExtractCommand( command, &argument );

		switch( cmdChar ) {

		//
		// Dump bitmap information
		//
		case 'b':
		case 'B':

			DumpBitmap( argument );
			break;

		//
		// Help
		//
		case '?':
		case 'H':
		case 'h':
			PrintHelp();
			break;

		//
		// Move Cluster
		//
		case 'm':
		case 'M':
			MoveCluster( drive, argument );
			break;

		//
		// Get cluster map for file specified by name
		//
		case 'N':
		case 'n':
			DumpFile( drive, argument );
			break;

		//
		// Quit
		//
		case 'Q':
		case 'q':
			printf("\nQuiting\n");
			exit(0);
			break;

		case 0:
			break;

		default:
			printf("\nInvalid command\n\n");
			break;
		}
	}
					
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区三区蜜桃| 懂色一区二区三区免费观看| 国产一区在线视频| 色8久久人人97超碰香蕉987| 精品国产伦一区二区三区免费 | 91色|porny| 亚洲欧美日韩系列| 久久综合久久久久88| 国产精品久久一卡二卡| 九色综合国产一区二区三区| 色国产综合视频| 国产精品麻豆网站| 国产一区二区三区日韩| 91精品国产综合久久久久久漫画| 自拍av一区二区三区| 国产精品一区二区免费不卡| 337p亚洲精品色噜噜| 一区二区三区在线视频免费| 成人综合在线视频| 久久蜜桃一区二区| 久久国产精品免费| 在线电影国产精品| 香蕉av福利精品导航| 欧美亚洲综合一区| 一区二区三区四区视频精品免费| 国产91在线|亚洲| 国产色综合久久| 国产成人亚洲精品青草天美| 久久色在线观看| 国内成人免费视频| www日韩大片| 国产福利91精品| 国产精品视频麻豆| 不卡大黄网站免费看| 中文字幕在线不卡视频| 91在线云播放| 夜夜嗨av一区二区三区网页| 欧美在线视频日韩| 午夜电影网亚洲视频| 欧美美女直播网站| 蜜臀av性久久久久av蜜臀妖精 | 欧美日韩精品一区二区三区四区| 亚洲无人区一区| 欧美乱熟臀69xxxxxx| 奇米888四色在线精品| 精品久久久久久久久久久久久久久 | 欧美精品一区二| 国产精品一区二区黑丝 | 欧美夫妻性生活| 蜜臀精品一区二区三区在线观看 | 欧美中文字幕亚洲一区二区va在线| 亚洲综合男人的天堂| 欧美日韩电影在线播放| 看片网站欧美日韩| 国产精品传媒视频| 欧美日本一道本| 国产精品一区二区在线看| 亚洲欧洲在线观看av| 欧美日韩成人一区| 国产在线一区观看| 亚洲视频一二区| 欧美日本韩国一区二区三区视频| 麻豆91免费观看| 亚洲婷婷综合久久一本伊一区| 欧美日本不卡视频| 国产成人精品一区二| 亚洲一二三四区不卡| 日韩精品资源二区在线| 91免费视频网址| 美女视频网站久久| 亚洲日本va午夜在线影院| 777欧美精品| 99re66热这里只有精品3直播| 日韩和欧美的一区| 国产精品三级av| 日韩欧美在线网站| 91丨porny丨首页| 蜜桃在线一区二区三区| 亚洲精品少妇30p| 精品成人在线观看| 欧美久久一二区| 99re这里只有精品首页| 九色|91porny| 天堂资源在线中文精品| 亚洲欧洲日产国产综合网| 精品国产露脸精彩对白| 欧美日韩精品福利| 成人av在线观| 国产麻豆精品在线观看| 日韩av午夜在线观看| 亚洲精品老司机| 国产精品国产三级国产专播品爱网| 91精品午夜视频| 在线免费观看不卡av| 不卡av在线免费观看| 国产成人免费视频一区| 看国产成人h片视频| 国产区在线观看成人精品| 久久久久久久久久电影| 欧美三级日韩在线| 粉嫩13p一区二区三区| 国产精品一区专区| 男男视频亚洲欧美| 午夜精品影院在线观看| 一区二区三区在线免费| 中文字幕一区二区三区四区不卡 | 日韩一区二区精品| 欧美剧在线免费观看网站| 欧美在线免费观看视频| 91最新地址在线播放| a美女胸又www黄视频久久| 东方欧美亚洲色图在线| 国产一区二区三区国产| 国产原创一区二区| 国产一区二区不卡老阿姨| 久久99国产精品免费| 精品在线视频一区| 精品一区二区在线看| 26uuu国产电影一区二区| 在线视频你懂得一区| 99视频一区二区三区| 懂色av一区二区三区蜜臀 | 亚洲欧美在线视频观看| 国产偷国产偷亚洲高清人白洁 | 国产精品99久久久久久宅男| 国产精品一区二区无线| 成人免费高清在线观看| 97久久精品人人澡人人爽| 99re亚洲国产精品| 欧美性猛交xxxx乱大交退制版| 欧美精品久久久久久久多人混战 | 成人h动漫精品一区二区| 丰满放荡岳乱妇91ww| 99久久精品免费看国产| 欧美午夜电影网| 欧美电影免费观看高清完整版在线 | 亚洲同性gay激情无套| 一级日本不卡的影视| 午夜免费久久看| 国模一区二区三区白浆| 国产91精品一区二区麻豆网站 | 久久精品国产第一区二区三区| 韩国毛片一区二区三区| 成人听书哪个软件好| 91成人看片片| 精品卡一卡二卡三卡四在线| 国产精品无码永久免费888| 一区二区免费视频| 久久精品久久久精品美女| 国产成人精品一区二区三区四区 | 国产精品入口麻豆原神| 亚洲一区二区3| 狠狠色丁香婷婷综合| 91蝌蚪porny九色| 欧美一级免费观看| 综合久久久久久久| 蜜臀精品久久久久久蜜臀 | 国产精品国产三级国产专播品爱网 | 中文字幕在线免费不卡| 日韩国产欧美视频| 成人免费看片app下载| 欧美日韩一区三区| 中文av字幕一区| 日本成人中文字幕在线视频| 成人高清伦理免费影院在线观看| 在线成人小视频| 亚洲精品午夜久久久| 国产一区二区三区精品视频| 欧美日韩一级二级三级| 国产精品每日更新在线播放网址| 日韩黄色一级片| 欧美综合一区二区| 中文字幕av一区二区三区高| 亚洲成av人片| 91天堂素人约啪| 国产精品视频免费看| 国产麻豆日韩欧美久久| 欧美一区二区三区不卡| 亚洲综合在线观看视频| 不卡视频免费播放| 国产亚洲午夜高清国产拍精品| 青青草国产成人av片免费| 在线精品视频一区二区三四| 一区二区三区自拍| 成人永久免费视频| 中文字幕在线一区免费| 精品国产sm最大网站免费看| 综合欧美一区二区三区| 国产真实乱偷精品视频免| 欧美一区二区三区在线视频| 亚洲精品国产无天堂网2021| 国产精品一级在线| 欧美大尺度电影在线| 天天做天天摸天天爽国产一区| 91老师片黄在线观看| 国产精品久久久久久久久晋中| 国产一区在线看| 久久综合久久综合九色| 激情久久久久久久久久久久久久久久 | 91日韩在线专区|