答:
DRIVER Dir;
BOOL bResult=FALSE;
for(TCHAR szDisk='A';szDisk<='Z';szDisk++)
{
memset(&Dir,0,sizeof(DRIVER));
unsigned _int64 i64FreeBytesToCaller;
unsigned _int64 i64TotalBytes;
unsigned _int64 i64FreeBytes;
/*
也可以定义成:
ULARGE_INTEGER i64FreeBytesToCaller;
ULARGE_INTEGER i64TotalBytes;
ULARGE_INTEGER i64FreeBytes;
*/
TCHAR szTemp[3] = {szDisk,':','\0'};
UINT uType=GetDriveType(szTemp);
switch(uType)
{
case DRIVE_FIXED://硬盘
{
Dir.Type = 1;
break;
}
case DRIVE_CDROM://光驱
{
Dir.Type = 2;
break;
}
case DRIVE_REMOTE://网络磁盘
{
Dir.Type = 3;
break;
}
case DRIVE_REMOVABLE://可移动磁盘
{
Dir.Type = 4;
break;
}
default:
{
continue;
}
}
/*相对于前面定义:
bResult = GetDiskFreeSpaceEx(szTemp,&i64FreeBytesToCaller,&i64TotalBytes,&i64FreeBytes);
*/
bResult = GetDiskFreeSpaceEx(szTemp,(PULARGE_INTEGER)&i64FreeBytesToCaller,(PULARGE_INTEGER)&i64TotalBytes,(PULARGE_INTEGER)&i64FreeBytes);
Dir.Disk = szDisk;
if(bResult)
{
Dir.All = (double)(i64TotalBytes/1024.0/1024/1024);
Dir.Free = (double)(i64FreeBytesToCaller/1024.0/1024/1024);
/*
相对于前面定义,获取时:
Dir.All = (double)(i64TotalBytes.QuadPart/1024.0/1024/1024);
Dir.Free = (double)(i64FreeBytesToCaller.QuadPart/1024.0/1024/1024);
*/
}
else
{
Dir.All = 0.0;
Dir.Free = 0.0;
}
}