-
大小: 5.01MB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-09-18
- 語言: 其他
- 標(biāo)簽:
資源簡介
恢復(fù)刪除文件,不錯(cuò)的學(xué)習(xí)例子,分享一下。

代碼片段和文件信息
#include?“commen.h“
#include?“healthInfo.h“
#include?“theDataRecoveryHead.h“
//////////////////////////////////////////////////////////////////////////
//獲取邏輯驅(qū)動(dòng)器信息?
?BOOL?GetLogicalDriveInfo(LOGICALDRIVEINFO?*logicalDriveInfochar?logicalDriveNumberint?phyDriveNumber)
{
HANDLE?hDrive;
char?path[128];
STORAGE_DEVICE_NUMBER?number;???//use?this?to?get?disk?numbers
DWORD?readed;???????????????????//?discard?results
sprintf_s(path“\\\\.\\%c:“l(fā)ogicalDriveNumber);
hDrive=CreateFile(pathGENERIC_READ?|?GENERIC_WRITEFILE_SHARE_READ?|?FILE_SHARE_WRITE?NULLOPEN_EXISTING0NULL);
if?(hDrive?==?INVALID_HANDLE_VALUE)?//?cannot?open?the?drive
{
CloseHandle(hDrive);
return?FALSE;
}
if?(DeviceIoControl(hDriveIOCTL_STORAGE_GET_DEVICE_NUMBERNULL0&numbersizeof(number)&readedNULL))
{
//如果不同一個(gè)磁盤,則返回FALSE
if?((number.DeviceNumber!=phyDriveNumber)?||?phyDriveNumber<0)
{
CloseHandle(hDrive);
return?FALSE;
}
}
//OK有這個(gè)物理驅(qū)動(dòng)器,而且屬于同一個(gè)磁盤開始獲取邏輯驅(qū)動(dòng)器信息
logicalDriveInfo->szDrive=logicalDriveNumber;
//獲取驅(qū)動(dòng)器類型
sprintf_s(path“%c:\\“l(fā)ogicalDriveNumber);
logicalDriveInfo->uDriveType=GetDriveType(path);
//使用GetVolumeInformation獲取
if(!GetVolumeInformation(
path
logicalDriveInfo->szDriveName
sizeof(logicalDriveInfo->szDriveName)
&logicalDriveInfo->dwSerialNumber
&logicalDriveInfo->dwMaximumComponentLength
&logicalDriveInfo->dwFileSystemFlags
logicalDriveInfo->dwFileSystem
sizeof(logicalDriveInfo->dwFileSystem)
))
{
CloseHandle(hDrive);
return?FALSE;
}
//使用GetDiskFreeSpace獲取信息
if?(!GetDiskFreeSpace(
path
&logicalDriveInfo->dwSectorsPerCluster
&logicalDriveInfo->dwBytesPerSector
&logicalDriveInfo->dwNumberOfFreeCluters
&logicalDriveInfo->dwTotalNumberOfClusters
))
{
CloseHandle(hDrive);
return?FALSE;
}
CloseHandle(hDrive);
return?TRUE;
}
//////////////////////////////////////////////////////////////////////////
//讀取物理驅(qū)動(dòng)器信息,簡短的
?//使用DeviceIoControl獲取硬件信息步驟:根據(jù)控制碼(第二個(gè)參數(shù)),填充好輸入
?//參數(shù),然后再定義輸出參數(shù),從輸出參數(shù)里取信息,這些參數(shù)一般是結(jié)構(gòu)體的。
BOOL?GetPhysicalDriveInfoShort?(PHYDRIVEINFOSHORT?*pThePhyDriveInfoint?iDrive)
{
HANDLE?hPhysicalDriveIOCTL?=?0;
BOOL?OK=FALSE;
TCHAR?driveName?[32];
_stprintf_s(driveName_T(“\\\\.\\PhysicalDrive%d“)iDrive);
//?打開設(shè)備,獲得物理磁盤句柄
hPhysicalDriveIOCTL?=?CreateFile?(driveName?0FILE_SHARE_READ?|?FILE_SHARE_WRITE?NULLOPEN_EXISTING?0?NULL);
if?(hPhysicalDriveIOCTL?!=?INVALID_HANDLE_VALUE)
{
STORAGE_PROPERTY_QUERY?query;
DWORD?cbBytesReturned?=?0;
char?buffer?[10000];
memset?((void?*)?&?query?0?sizeof?(query));
query.PropertyId?=?StorageDeviceProperty;
query.QueryType?=?PropertyStandardQuery;
memset?(buffer?0?sizeof?(buffer));
if?(?DeviceIoControl?(hPhysicalDriveIOCTL?IOCTL_STORAGE_QUERY_PROPERTY&?querysizeof?(query)&?buffersizeof?(buffer)&?cbBytesReturned?NULL)?)
{????
STORAGE_DEVICE_DEscriptOR?*?descrip?=?(
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????96256??2014-06-09?15:53??Src\Debug\Robam?Data?Recovery.exe
?????文件?????920576??2014-06-09?15:53??Src\Debug\Robam?Data?Recovery.pdb
?????文件??????60928??2012-05-22?17:06??Src\Release\Robam?Data?Recovery.exe
?????文件?????437248??2012-05-22?17:06??Src\Release\Robam?Data?Recovery.pdb
?????文件??????61011??2012-05-27?15:48??Src\TheGood\commen.cpp
?????文件??????12704??2014-05-19?15:19??Src\TheGood\commen.h
?????文件??????23944??2014-06-09?15:53??Src\TheGood\Debug\BuildLog.htm
?????文件?????159061??2014-05-19?15:20??Src\TheGood\Debug\commen.obj
?????文件?????170351??2014-06-09?15:53??Src\TheGood\Debug\main.obj
?????文件?????????65??2014-06-09?15:53??Src\TheGood\Debug\mt.dep
?????文件????????937??2014-05-15?08:45??Src\TheGood\Debug\Robam?Data?Recovery.exe.em
?????文件???????1004??2014-05-15?08:45??Src\TheGood\Debug\Robam?Data?Recovery.exe.em
?????文件????????873??2014-06-09?15:53??Src\TheGood\Debug\Robam?Data?Recovery.exe.intermediate.manifest
?????文件????????663??2012-03-02?14:19??Src\TheGood\Debug\TheGood.exe.em
?????文件????????728??2012-03-02?14:19??Src\TheGood\Debug\TheGood.exe.em
?????文件????????621??2012-03-05?23:11??Src\TheGood\Debug\TheGood.exe.intermediate.manifest
?????文件??????10460??2014-05-19?15:20??Src\TheGood\Debug\TheGood.res
?????文件?????592896??2014-06-09?15:53??Src\TheGood\Debug\vc90.idb
?????文件?????462848??2014-06-09?15:53??Src\TheGood\Debug\vc90.pdb
?????文件???????1385??2012-03-23?21:51??Src\TheGood\healthInfo.h
?????文件??????90260??2014-06-09?15:53??Src\TheGood\main.cpp
?????文件????????824??2012-03-16?12:05??Src\TheGood\PIC\301.bmp
?????文件???????3444??2012-03-16?12:01??Src\TheGood\PIC\301.png
?????文件????????824??2012-03-16?12:05??Src\TheGood\PIC\302.bmp
?????文件???????3390??2012-03-16?12:01??Src\TheGood\PIC\302.png
?????文件????????824??2012-03-16?12:05??Src\TheGood\PIC\617.bmp
?????文件???????3571??2012-04-08?14:10??Src\TheGood\PIC\617.png
?????文件???????1150??2012-04-08?14:17??Src\TheGood\PIC\favicon.ico
?????文件??????21530??2012-05-22?17:06??Src\TheGood\Release\BuildLog.htm
?????文件?????173575??2012-05-22?17:06??Src\TheGood\Release\commen.obj
............此處省略27個(gè)文件信息
評(píng)論
共有 條評(píng)論