• 大小: 5.01MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-18
  • 语言: 其他
  • 标签:

资源简介

恢复删除文件,不错的学习例子,分享一下。

资源截图

代码片段和文件信息

#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.embed.manifest

     文件       1004  2014-05-15 08:45  Src\TheGood\Debug\Robam Data Recovery.exe.embed.manifest.res

     文件        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.embed.manifest

     文件        728  2012-03-02 14:19  Src\TheGood\Debug\TheGood.exe.embed.manifest.res

     文件        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个文件信息

评论

共有 条评论

相关资源