数据恢复 源码


数据恢复 源码 数据恢复 源码 数据恢复 源码 数据恢复 源码 数据恢复 源码
资源截图
代码片段和文件信息
#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 = (

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-01-08 15:42  dataRecovery
     目录           0  2018-01-08 15:32  dataRecoverySrc
     目录           0  2018-01-08 15:32  dataRecoverySrcDebug
     文件       96256  2014-06-09 15:53  dataRecoverySrcDebugRobam Data Recovery.exe
     文件      920576  2014-06-09 15:53  dataRecoverySrcDebugRobam Data Recovery.pdb
     目录           0  2018-01-08 15:32  dataRecoverySrcRelease
     文件       60928  2012-05-22 17:06  dataRecoverySrcReleaseRobam Data Recovery.exe
     文件      437248  2012-05-22 17:06  dataRecoverySrcReleaseRobam Data Recovery.pdb
     目录           0  2018-01-08 15:32  dataRecoverySrcTheGood
     目录           0  2018-01-08 15:32  dataRecoverySrcTheGoodDebug
     文件       23944  2014-06-09 15:53  dataRecoverySrcTheGoodDebugBuildLog.htm
     文件         937  2014-05-15 08:45  dataRecoverySrcTheGoodDebugRobam Data Recovery.exe.embed.manifest
     文件        1004  2014-05-15 08:45  dataRecoverySrcTheGoodDebugRobam Data Recovery.exe.embed.manifest.res
     文件         873  2014-06-09 15:53  dataRecoverySrcTheGoodDebugRobam Data Recovery.exe.intermediate.manifest
     文件         663  2012-03-02 14:19  dataRecoverySrcTheGoodDebugTheGood.exe.embed.manifest
     文件         728  2012-03-02 14:19  dataRecoverySrcTheGoodDebugTheGood.exe.embed.manifest.res
     文件         621  2012-03-05 23:11  dataRecoverySrcTheGoodDebugTheGood.exe.intermediate.manifest
     文件       10460  2014-05-19 15:20  dataRecoverySrcTheGoodDebugTheGood.res
     文件      159061  2014-05-19 15:20  dataRecoverySrcTheGoodDebugcommen.obj
     文件      170351  2014-06-09 15:53  dataRecoverySrcTheGoodDebugmain.obj
     文件          65  2014-06-09 15:53  dataRecoverySrcTheGoodDebugmt.dep
     文件      592896  2014-06-09 15:53  dataRecoverySrcTheGoodDebugvc90.idb
     文件      462848  2014-06-09 15:53  dataRecoverySrcTheGoodDebugvc90.pdb
     目录           0  2018-01-08 15:32  dataRecoverySrcTheGoodPIC
     文件         824  2012-03-16 12:05  dataRecoverySrcTheGoodPIC301.bmp
     文件        3444  2012-03-16 12:01  dataRecoverySrcTheGoodPIC301.png
     文件         824  2012-03-16 12:05  dataRecoverySrcTheGoodPIC302.bmp
     文件        3390  2012-03-16 12:01  dataRecoverySrcTheGoodPIC302.png
     文件         824  2012-03-16 12:05  dataRecoverySrcTheGoodPIC617.bmp
     文件        3571  2012-04-08 14:10  dataRecoverySrcTheGoodPIC617.png
     文件        1150  2012-04-08 14:17  dataRecoverySrcTheGoodPICfavicon.ico
............此处省略24个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)