void CGetInfoDlg::GetDiskInfo()
{
// TODO: 在此处添加实现代码.
ULARGE_INTEGER freeSize, totalSize;
TCHAR volumeName[MAX_PATH + 1] = { 0 };
UINT driveType = 0;
CString driveTypeName;
for (TCHAR drive = _T('A'); drive <= _T('Z'); drive++)
{
CString rootPath;
rootPath.Format(_T("%c:\\"), drive);
driveType = ::GetDriveType(rootPath);
switch (driveType)
{
case DRIVE_UNKNOWN:
driveTypeName = _T("未知");
break;
case DRIVE_NO_ROOT_DIR:
driveTypeName = _T("无根目录");
break;
case DRIVE_REMOVABLE:
driveTypeName = _T("可移动磁盘");
break;
case DRIVE_FIXED:
driveTypeName = _T("固定磁盘");
break;
case DRIVE_REMOTE:
driveTypeName = _T("网络驱动器");
break;
case DRIVE_CDROM:
driveTypeName = _T("CD/DVD-ROM");
break;
case DRIVE_RAMDISK:
driveTypeName = _T("RAM 磁盘");
break;
default:
driveTypeName = _T("未知");
}
if (GetDiskFreeSpaceEx(rootPath, &freeSize, &totalSize, NULL))
{
CString freeSpace;
freeSpace.Format(_T("%lldKB"), freeSize.QuadPart / 1024);
CString totalSpace;
totalSpace.Format(_T("%lldKB"), totalSize.QuadPart / 1024);
if (!GetVolumeInformation(rootPath, volumeName, MAX_PATH + 1, NULL, NULL, NULL, NULL, 0))
{
_tcscpy_s(volumeName, _T(""));
}
int index = m_diskList.InsertItem(m_diskList.GetItemCount(), rootPath);
m_diskList.SetItemText(index, 1, driveTypeName);
m_diskList.SetItemText(index, 2, volumeName);
m_diskList.SetItemText(index, 3, totalSpace);
m_diskList.SetItemText(index, 4, freeSpace);
}
}
}