资源简介
恢复删除文件,不错的学习例子,分享一下。
代码片段和文件信息
#include “commen.h“
#include “healthInfo.h“
#include “theDataRecoveryHead.h“
//////////////////////////////////////////////////////////////////////////
//获取逻辑驱动器信息
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:“logicalDriveNumber);
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))
{
//如果不同一个磁盘,则返回FALSE
if ((number.DeviceNumber!=phyDriveNumber) || phyDriveNumber<0)
{
CloseHandle(hDrive);
return FALSE;
}
}
//OK有这个物理驱动器,而且属于同一个磁盘开始获取逻辑驱动器信息
logicalDriveInfo->szDrive=logicalDriveNumber;
//获取驱动器类型
sprintf_s(path“%c:\\“logicalDriveNumber);
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;
}
//////////////////////////////////////////////////////////////////////////
//读取物理驱动器信息,简短的
//使用DeviceIoControl获取硬件信息步骤:根据控制码(第二个参数),填充好输入
//参数,然后再定义输出参数,从输出参数里取信息,这些参数一般是结构体的。
BOOL GetPhysicalDriveInfoShort (PHYDRIVEINFOSHORT *pThePhyDriveInfoint iDrive)
{
HANDLE hPhysicalDriveIOCTL = 0;
BOOL OK=FALSE;
TCHAR driveName [32];
_stprintf_s(driveName_T(“\\\\.\\PhysicalDrive%d“)iDrive);
// 打开设备,获得物理磁盘句柄
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 = (
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 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个文件信息
评论
共有 条评论