通過Windows API可以獲取磁盤總容量、空閒容量和可用空閒容量。
代碼如下:
#include <windows.h>
// 硬盤詳情結構體
struct DriveInfo
{
QString sDriName; //盤名
quint64 uiTotal; //總容量
quint64 uiFree; //空閒容量
quint64 uiFree2Caller; //可用的空閒容量
DriveInfo()
{
sDriName = "";
uiTotal = 0;
uiFree = 0;
uiFree2Caller = 0;
}
};
//獲取特定硬盤的使用信息
//driveName: 盤名,例如:"C:\\"
DriveInfo get_drive_usage(QString& driveName)
{
DriveInfo dinfo;
BOOL ret = GetDiskFreeSpaceEx(LPCWSTR(driveName.toStdWString().c_str()), (PULARGE_INTEGER)&dinfo.uiFree2Caller, (PULARGE_INTEGER)&dinfo.uiTotal, (PULARGE_INTEGER)&dinfo.uiFree);
return dinfo;
}
如果要計算磁盤的使用率,可參考下面的公式:
磁盤使用率 = 1 - (空閒容量 / 總容量)
如果要計算磁盤的可用率,可參考下面的公式:
磁盤可用率 = 1 - (可用磁盤容量 / 總容量)
注:不是所有的空閒容量都可用