分类: C/C++
2012-01-27 01:03:11
在VC中获得盘符容量信息的函数只要有两个,分别为:
BOOL WINAPI GetDiskFreeSpace(
__in LPCTSTR lpRootPathName, //传入用户在该磁盘的盘符
__out LPDWORD lpSectorsPerCluster, //返回一簇有多少扇区
__out LPDWORD lpBytesPerSector, //返回一个扇区有多个字节
__out LPDWORD lpNumberOfFreeClusters, //返回当前盘符剩余多少空间
__out LPDWORD lpTotalNumberOfClusters //当前盘符有多少空间
);
BOOL WINAPI GetDiskFreeSpaceEx(
__in LPCTSTR lpDirectoryName, //传入用户在该磁盘的盘符
__out PULARGE_INTEGER lpFreeBytesAvailable, //当前用户可用多少空间
__out PULARGE_INTEGER lpTotalNumberOfBytes, //当前盘符有多空间
__out PULARGE_INTEGER lpTotalNumberOfFreeBytes //当前盘符一共剩余多少空间
);
第一个函数用于当前盘符小于2GB容量,后一个函数用处比较广。
下面代码使用第二个函数获得信息。
CString msgStr;
ULARGE_INTEGER a1 ,a2 ,a3;
if (GetDiskFreeSpaceEx(_T("D:"),(PULARGE_INTEGER)&a1,(PULARGE_INTEGER)&a2,(PULARGE_INTEGER)&a3) != 0)
{
double d1,d2,d3;
d1 = (double)a1.QuadPart / 1024 / 1024 / 1024;
d2 = (double)a2.QuadPart / 1024 / 1024 / 1024;
d3 = (double)a3.QuadPart / 1024 / 1024 / 1024;
msgStr.Format("盘符:D:/n当前用户剩余容量:%.3fGB/n总的容量:%.3fGB/n剩余容量:%.3fGB/n",d1,d2,d3);
MessageBox(msgStr);
}
else
{
MessageBox("失败");
}
运行结果: