|
bool GetDiskSpace(LPCTSTR lpszDrive)
{
if (!lpszDrive || _tcslen(lpszDrive) < 3) return false;
DWORD dwSectPerClust = 0; //每个簇有多少个扇区
DWORD dwBytesPerSect = 0; //每个扇区有多少个字节
DWORD dwTotalClusters = 0; //总的簇
DWORD dwFreeClusters = 0; //可用的簇
BOOL bRet = GetDiskFreeSpace(lpszDrive, &dwSectPerClust, &dwBytesPerSect, &dwFreeClusters, &dwTotalClusters);
if (!bRet) return FALSE;
cout << "使用 GetDiskFreeSpace 函数获取磁盘空间信息" << endl;
cout << "每个簇有多少个扇区: " << dwSectPerClust << endl;
cout << "每个扇区有多少个字节: " << dwBytesPerSect << endl;
cout << "可用的簇: " << dwFreeClusters << endl;
cout << "总簇数量: " << dwTotalClusters << endl;
cout << "磁盘总容量: " << dwTotalClusters * (DWORD64)dwSectPerClust * (DWORD64)dwBytesPerSect << endl;
cout << "磁盘空闲容量: " << dwFreeClusters * (DWORD64)dwSectPerClust * (DWORD64)dwBytesPerSect << endl;
return true;
} 这是抄的老师的代码 本来自己写了 老报错就试试老师的没想到还是一样 运行到GetDiskFreeSpace(lpszDrive, &dwSectPerClust, &dwBytesPerSect, &dwFreeClusters, &dwTotalClusters);
int main(int args, TCHAR* argv)
{
DWORD dwsize=GetLogicalDriveStrings(0,NULL);//获取需要的字符串大小
TCHAR* psizepath = new TCHAR[dwsize + 10];//比获取到的适当大点预留空间
ZeroMemory(psizepath, (dwsize + 10)*sizeof(DWORD));//清零字符
GetLogicalDriveStrings(dwsize + 10, psizepath);//获取盘符驱动
DWORD SectorsPerCluster=0,BytesPerSector=0,NumberOfFreeClusters=0,TotalNumberOfClusters=0;//定义每簇的扇区数,每扇区的字节数,空余簇的数量,全部簇的数量
//wcout << psizepath;
if (*psizepath)
{
do {
UINT uidrivetype= GetDriveType(
psizepath
);
switch (uidrivetype)//判断磁盘类型
{
case DRIVE_UNKNOWN:
cout << "未知的磁盘类型 ";
break;
case DRIVE_NO_ROOT_DIR:
cout << "是无效的 ";
break;
case DRIVE_REMOVABLE:
cout << "可移动磁盘 ";
break;
case DRIVE_FIXED:
cout << "固定磁盘 ";
break;
case DRIVE_REMOTE:
cout << "网络磁盘 ";
break;
case DRIVE_CDROM:
cout << "光驱 ";
break;
case DRIVE_RAMDISK:
cout << "RAM磁盘类型 ";
break;
default:
break;
}
wcout << psizepath << endl;
//BOOL bret = GetDiskFreeSpace(ps, &SectorsPerCluster, &BytesPerSector, &NumberOfFreeClusters, &TotalNumberOfClusters);
GetDiskSpace(psizepath);
psizepath += wcslen(psizepath) + 1;
} while (*psizepath);
}
delete []psizepath;//删除动态申请的空间 防止内存泄漏
return 0;
} 这是主函数 求解 |
上一篇: 在文档中读取数据下一篇: 这道题太难了。。
|