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

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

?? directaccesshddlg.cpp

?? 如何直接安全訪問硬盤數據?
?? CPP
字號:
#include "stdafx.h"
#include "DirectAccessHD.h"
#include "DirectAccessHDDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


CDirectAccessHDDlg::CDirectAccessHDDlg( CWnd* pParent /*=NULL*/ )
	: CDialog( CDirectAccessHDDlg::IDD, pParent )
{
	//{{AFX_DATA_INIT( CDirectAccessHDDlg )
	m_sData = _T( "" );
	m_sDisk = _T( "" );
	m_uFrom = 0;
	m_uTo = 0;
	m_bAllDisk = FALSE;
	//}}AFX_DATA_INIT
	m_hIcon = AfxGetApp()->LoadIcon( IDR_MAINFRAME );
}

void CDirectAccessHDDlg::DoDataExchange( CDataExchange* pDX )
{
	CDialog::DoDataExchange( pDX );
	//{{AFX_DATA_MAP( CDirectAccessHDDlg )
	DDX_Text( pDX, IDC_DATA, m_sData );
	DDX_CBString( pDX, IDC_DISK, m_sDisk );
	DDX_Text( pDX, IDC_FROM, m_uFrom );
	DDV_MinMaxUInt( pDX, m_uFrom, 0, 99999999 );
	DDX_Text( pDX, IDC_TO, m_uTo );
	DDV_MinMaxUInt( pDX, m_uTo, 0, 99999999 );
	DDX_Check( pDX, IDC_ALLDISK, m_bAllDisk );
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP( CDirectAccessHDDlg, CDialog )
	//{{AFX_MSG_MAP( CDirectAccessHDDlg )
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED( IDC_VIEW, OnView )
	ON_BN_CLICKED( IDC_CLEARDATA, OnCleardata )
	ON_BN_CLICKED( IDC_BACKUP, OnBackup )
	ON_BN_CLICKED( IDC_RESTORE, OnRestore )
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


BOOL CDirectAccessHDDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	SetIcon( m_hIcon, TRUE );			// Set big icon
	SetIcon( m_hIcon, FALSE );		// Set small icon
	
	return TRUE;
}

void CDirectAccessHDDlg::OnPaint() 
{
	if ( IsIconic() )
	{
		CPaintDC m_dc( this ); // device context for painting

		SendMessage( WM_ICONERASEBKGND, ( WPARAM ) m_dc.GetSafeHdc(), 0 );

		int cxIcon = GetSystemMetrics( SM_CXICON );
		int cyIcon = GetSystemMetrics( SM_CYICON );
		CRect rect;
		GetClientRect( &rect );
		int x = ( rect.Width() - cxIcon + 1 ) / 2;
		int y = ( rect.Height() - cyIcon + 1 ) / 2;

		m_dc.DrawIcon( x, y, m_hIcon );
	}
	else
		CDialog::OnPaint();
}

HCURSOR CDirectAccessHDDlg::OnQueryDragIcon()
{
	return ( HCURSOR ) m_hIcon;
}

void CDirectAccessHDDlg::OnView() 
{
	UpdateData( TRUE );
	if ( m_uTo < m_uFrom )
		return;
	
	char cTemp[1];
	memcpy( cTemp, m_sDisk.Left( 1 ), 1 );
	UINT uDiskID = cTemp[0] - 64;

	DWORD dwSectorNum = m_uTo - m_uFrom + 1;
	if ( dwSectorNum > 100 )
		return;

	unsigned char* bBuf = new unsigned char[dwSectorNum * 512];
	
	if ( ReadSectors( uDiskID, m_uFrom, ( UINT )dwSectorNum, bBuf ) == FALSE )
	{
		MessageBox( "所選磁盤分區不存在!", "錯誤", MB_OK | MB_ICONERROR );
		return;
	}
	
	char* cBuf = new char[dwSectorNum * 5120];
	memset( cBuf, 0, sizeof( cBuf ) );

	for ( DWORD i = 0; i < dwSectorNum * 512; i++ )
	{
		sprintf( cBuf, "%s%02X ", cBuf, bBuf[i] );

		if ( ( i % 512 ) == 511 )
			sprintf( cBuf, "%s\r\n第%d扇區\r\n", cBuf, ( int )( i / 512 ) + m_uFrom );
		if ( ( i % 16 ) == 15 )
			sprintf( cBuf, "%s\r\n", cBuf );
		else if ( ( i % 16 ) == 7 )
			sprintf( cBuf, "%s- ", cBuf );
	}
	SetDlgItemText( IDC_DATA, cBuf );
	delete[] bBuf;
	delete[] cBuf;
}

void CDirectAccessHDDlg::OnCleardata() 
{
	UpdateData( TRUE );

	char cTemp[1];
	memcpy( cTemp, m_sDisk.Left( 1 ), 1 );
	UINT uDiskID = cTemp[0] - 64;
	if ( uDiskID > 2 )
	{
		if ( MessageBox( "要清理的是硬盤分區,請確認是否繼續?", "提示", MB_YESNO | MB_ICONWARNING ) != 6 )
			return;
		if ( uDiskID == 3 )
		{
			if ( MessageBox( "要清理的是系統分區,請再次確認是否繼續?", "提示", MB_YESNO | MB_ICONWARNING ) != 6 )
				return;
		}
	}
	
	unsigned char bBuf[512];

	UINT i = 0;
	BOOL m_ret = TRUE;
	while ( m_bAllDisk )		
	{
		memset( bBuf, 0xFF, sizeof( bBuf ) );
		m_ret = WriteSectors( uDiskID, i, 1, bBuf );
		memset( bBuf, 0, sizeof( bBuf ) );
		m_ret = WriteSectors( uDiskID, i, 1, bBuf );
		
		if ( m_ret == FALSE )
		{
			if ( i == 0 )
				MessageBox( "所選磁盤分區不存在!", "錯誤", MB_OK | MB_ICONERROR );
			else
				MessageBox( "磁盤數據擦除完畢!", "錯誤", MB_OK | MB_ICONERROR );
			return;
		}
		i++;
	}	

	if ( m_bAllDisk == FALSE )
	{
		for ( DWORD i = m_uFrom; i <= m_uTo; i++ )
		{
			memset( bBuf, 0xFF, sizeof( bBuf ) );
			m_ret = WriteSectors( uDiskID, i, 1, bBuf );
			memset( bBuf, 0, sizeof( bBuf ) );
			m_ret = WriteSectors( uDiskID, i, 1, bBuf );
			if ( m_ret == FALSE )
			{
				if ( i == 0 )
					MessageBox( "所選磁盤分區不存在!", "錯誤", MB_OK | MB_ICONERROR );
				else
					MessageBox( "磁盤數據擦除完畢!", "提示", MB_OK | MB_ICONINFORMATION );
				return;
			}
		}
	}
}


void CDirectAccessHDDlg::OnBackup() 
{
	UpdateData( TRUE );
	if ( m_uTo < m_uFrom )
		return;

	CFileDialog fileDlg( FALSE, "*.sec", "*.sec", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "磁盤扇區數據( *.sec )|*.sec||", NULL );
	CFile m_file;
	if ( fileDlg.DoModal() != IDOK )
		return;
	
	m_file.Open( fileDlg.GetPathName(), CFile::modeCreate | CFile::modeReadWrite );
	char cTemp[1];
	memcpy( cTemp, m_sDisk.Left( 1 ), 1 );
	UINT uDiskID = cTemp[0] - 64;

	DWORD dwSectorNum = m_uTo - m_uFrom + 1;
	unsigned char* bBuf = new unsigned char[dwSectorNum * 512];
	
	if ( ReadSectors( uDiskID, m_uFrom, ( UINT )dwSectorNum, bBuf ) == FALSE )
	{
		MessageBox( "所選磁盤分區不存在!", "錯誤", MB_OK | MB_ICONERROR );
		return;
	}

	m_file.Write( bBuf, dwSectorNum * 512 );
	m_file.Close();

	delete[] bBuf;

	MessageBox( "數據備份完畢!", "提示", MB_OK | MB_ICONINFORMATION );
}

void CDirectAccessHDDlg::OnRestore() 
{
	UpdateData( TRUE );
	
	char cTemp[1];
	memcpy( cTemp, m_sDisk.Left( 1 ), 1 );
	UINT uDiskID = cTemp[0] - 64;

	CFileDialog fileDlg( TRUE, "*.sec", "*.sec", OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
		"磁盤扇區數據( *.sec )|*.sec||", NULL );
	CFile m_file;
	if ( fileDlg.DoModal() != IDOK )
		return;

	m_file.Open( fileDlg.GetPathName(), CFile::modeReadWrite );
	DWORD dwSectorNum = m_file.GetLength();
	if ( dwSectorNum % 512 != 0 )
		return;
	dwSectorNum /= 512;

	unsigned char* bBuf = new unsigned char[dwSectorNum * 512];
	m_file.Read( bBuf, dwSectorNum * 512 );

	if ( WriteSectors( uDiskID, m_uFrom, ( UINT )dwSectorNum, bBuf ) == FALSE )
		MessageBox( "所選磁盤分區不存在!", "錯誤", MB_OK | MB_ICONERROR );
	else
	{
		m_file.Close();
		delete[] bBuf;
		
		MessageBox( "數據恢復完畢!", "提示", MB_OK | MB_ICONINFORMATION );
	}
}

BOOL CDirectAccessHDDlg::WriteSectors( BYTE m_drive, DWORD m_start_sec,
							   WORD m_sec_num, LPBYTE m_sec_buf )
{
	if ( m_drive == 0 )
		return 0;

	char m_dev_name[] = "\\\\.\\A:";
	m_dev_name[4] ='A' + m_drive - 1;
	HANDLE m_dev = CreateFile( m_dev_name, GENERIC_WRITE, FILE_SHARE_WRITE,
		NULL, OPEN_EXISTING, 0, NULL );
	if ( m_dev == INVALID_HANDLE_VALUE )
		return 0;

	SetFilePointer( m_dev, 512 * m_start_sec, 0, FILE_BEGIN );

	DWORD dwCB;
	BOOL m_ret = WriteFile( m_dev, m_sec_buf, 512 * m_sec_num, &dwCB, NULL );
	CloseHandle( m_dev );

	return m_ret;
}

BOOL CDirectAccessHDDlg::ReadSectors( BYTE m_drive, DWORD m_start_sec, 
							  WORD m_sec_num, LPBYTE m_sec_buf )
{
	if ( m_drive == 0 )
		return 0;

	char m_dev_name[] = "\\\\.\\A:";
	m_dev_name[4] ='A' + m_drive - 1;
	HANDLE m_dev = CreateFile( m_dev_name, GENERIC_READ, FILE_SHARE_WRITE,
		NULL, OPEN_EXISTING, 0, NULL );
	if ( m_dev == INVALID_HANDLE_VALUE )
		return 0;

	SetFilePointer( m_dev, 512 * m_start_sec, 0, FILE_BEGIN );

	DWORD dwCB;
	BOOL m_ret = ReadFile( m_dev, m_sec_buf, 512 * m_sec_num, &dwCB, NULL );
	CloseHandle( m_dev );

	return m_ret;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品区一区二区| 99视频一区二区三区| 亚洲精品高清在线| 国产精品久久毛片av大全日韩| 欧美本精品男人aⅴ天堂| 欧美乱妇20p| 欧美日韩高清一区| 欧美日韩中文字幕一区| 欧美影院一区二区三区| 欧美熟乱第一页| 欧美日韩国产大片| 日韩一区二区三区四区| 日韩天堂在线观看| 久久精品亚洲精品国产欧美kt∨ | 亚洲黄色尤物视频| 亚洲欧美日韩成人高清在线一区| 亚洲裸体xxx| 一区二区三区 在线观看视频| 亚洲一区二区三区视频在线 | 久久久久97国产精华液好用吗| 久久奇米777| 亚洲欧洲一区二区在线播放| 中文字幕亚洲电影| 樱桃视频在线观看一区| 奇米色777欧美一区二区| 国产呦精品一区二区三区网站| 国产精品一区一区三区| av在线不卡网| 在线成人免费视频| 久久久久久97三级| 亚洲人妖av一区二区| 一区二区三区在线视频播放| 美脚の诱脚舐め脚责91| 国产成人一区在线| 欧美三级在线播放| 久久九九全国免费| 亚洲综合成人在线视频| 经典三级视频一区| 色妹子一区二区| 日韩精品中文字幕在线一区| 精品处破学生在线二十三| 国产区在线观看成人精品| 一区二区三区四区国产精品| 亚洲超碰97人人做人人爱| 黄色小说综合网站| 欧美视频一区二区三区四区| 久久久欧美精品sm网站| 亚洲综合视频在线观看| 国产福利一区二区三区| 欧美一区二区播放| 一区二区三区免费观看| 成人av免费网站| 久久影院视频免费| 日韩av中文在线观看| 91污片在线观看| 欧美国产一区二区| 国产精品18久久久久久vr| 91精品欧美久久久久久动漫| 欧美精品一区二区三区在线播放 | 最近日韩中文字幕| 国产精品久久777777| 国产精品免费aⅴ片在线观看| 亚洲精品日日夜夜| 免费人成精品欧美精品| 精品在线一区二区| 91小宝寻花一区二区三区| 欧美电影在线免费观看| 久久免费精品国产久精品久久久久| 中文字幕不卡在线播放| 亚洲国产人成综合网站| 国产一区二区三区在线观看精品 | 日本最新不卡在线| 午夜在线成人av| 一区二区三区在线免费播放| 国产人妖乱国产精品人妖| 国产精品影视在线| 久久99久久99小草精品免视看| 国产精品久久久久久久久动漫 | 91麻豆精品国产91久久久使用方法 | 在线免费观看成人短视频| 欧美一区二区三区电影| 国产精品久久久久久久久免费桃花| 亚洲国产综合色| 国产suv一区二区三区88区| 欧美在线|欧美| 欧美激情艳妇裸体舞| 日韩av一区二区在线影视| 91亚洲资源网| 精品少妇一区二区三区在线播放 | 91玉足脚交白嫩脚丫在线播放| 欧美日韩亚洲综合在线| 亚洲国产精品成人综合色在线婷婷 | 夜夜操天天操亚洲| 国产一区二区三区免费在线观看 | 欧美日韩一二三| 成人黄色电影在线| 五月婷婷综合网| 91在线视频播放地址| 欧美成人一区二区三区在线观看| 亚洲bdsm女犯bdsm网站| 91在线国内视频| 欧美精品成人一区二区三区四区| 国产精品传媒入口麻豆| 亚洲午夜一区二区三区| 91丨九色丨黑人外教| 欧美高清在线精品一区| 精品午夜一区二区三区在线观看| 日韩天堂在线观看| 五月婷婷另类国产| 日韩欧美亚洲另类制服综合在线 | 国产日韩欧美综合在线| 国产美女精品一区二区三区| 久久人人爽人人爽| 处破女av一区二区| 国产欧美日韩精品a在线观看| 国产伦精品一区二区三区免费迷| 精品1区2区在线观看| 国产一区二区剧情av在线| 久久久久久久久久久黄色| 国产精品一线二线三线| 国产女人水真多18毛片18精品视频| 国产麻豆午夜三级精品| 日本一区二区三区四区在线视频| 国产高清不卡一区| 国产精品第五页| 91福利视频久久久久| 欧美韩日一区二区三区四区| 国产经典欧美精品| 欧美在线免费播放| 日日摸夜夜添夜夜添国产精品| 国产91精品久久久久久久网曝门 | 91精选在线观看| 麻豆一区二区三区| 国产清纯美女被跳蛋高潮一区二区久久w | 久久综合久久久久88| 成人免费视频免费观看| 一区二区三区中文在线观看| 欧美人妖巨大在线| 国产在线精品国自产拍免费| 欧美精品第1页| 亚洲另类在线视频| 午夜一区二区三区视频| 国产成人免费网站| 国产精品久久久久影院| 欧美精品v国产精品v日韩精品| 国内不卡的二区三区中文字幕 | 国产成人av影院| 成人免费一区二区三区视频| 91麻豆精品国产自产在线| 国模娜娜一区二区三区| 一区二区视频免费在线观看| 国产一区三区三区| 激情综合色综合久久| 粉嫩13p一区二区三区| 亚洲欧洲综合另类在线| 日韩精品中文字幕在线不卡尤物| 91美女精品福利| 18欧美乱大交hd1984| 国产成人在线看| 亚洲欧美日韩成人高清在线一区| 欧洲一区在线电影| 粉嫩13p一区二区三区| 青青草精品视频| 一区二区三区国产精华| 亚洲国产精品成人综合色在线婷婷| 欧美一区二区三区在线电影| 成人一区二区三区| 美女www一区二区| 五月激情综合色| 一区二区在线免费观看| 欧美激情一区不卡| 久久综合九色综合97_久久久| 欧美挠脚心视频网站| 色哟哟国产精品免费观看| 不卡视频一二三四| 国产精品66部| 亚洲欧美经典视频| 国产精品情趣视频| 亚洲国产精品v| 欧美久久久久久久久久 | 亚洲色图另类专区| 中文字幕av一区二区三区免费看| 日韩精品一区二区三区视频播放 | 一区二区三区精密机械公司| 国产精品一区二区在线播放| 26uuu国产一区二区三区| 日韩欧美黄色影院| 欧美一区午夜精品| 欧美一区二区三区婷婷月色 | 国产情人综合久久777777| 精品久久久久一区二区国产| 日韩欧美国产一区二区在线播放| 884aa四虎影成人精品一区| 欧美日韩国产影片| 成人精品亚洲人成在线| 波多野结衣精品在线| 日本高清无吗v一区| 久久国产精品第一页| 午夜欧美在线一二页| 三级一区在线视频先锋|