/*获取磁盘的空闲信息*/
/*头文件*/
#include <windows.h>
#include <stdio.h>
/******************************
// BOOL GetDiskSPaceInfo ( LPCSTR pszDrive )
//功能 : 根据输入的驱动器,获取磁盘的总容量、
// 空闲空间、簇数量等磁盘信息
//参数 : 驱动器根路径,比如D:\
*******************************/
BOOL GetDiskSpaceInfo (LPCSTR pszDrive )
{
DWORD64 dwFreeBytesToCaller, //总空闲簇数
dwTotalBytes, //总字节数
dwFreeBytes; //空闲字节数
DWORD dwSectPerClust, //扇区数
dwBytesPerSect, //每扇区的字节数
dwFreeClusters, //空闲簇数
dwTotalClusters; //总的簇数
BOOL bResult;
//使用 GetDiskFreeSpaceEx //获取磁盘信息并打印结果
bResult = GetDiskFreeSpaceEx (pszDrive,
(PULARGE_INTEGER) & dwFreeBytesToCaller,
(PULARGE_INTEGER) & dwTotalBytes,
(PULARGE_INTEGER) & dwFreeBytes);
if(bResult)
{
printf("使用GetDiskFreeSpaceExcellent获取磁盘空闲信息\n");
printf("可获得的空闲空间(字节):\t%I64d\n",dwFreeBytesToCaller);
printf("空闲空间(字节):\t\t%I64d\n",dwFreeBytes);
printf("磁盘总容量(字节):\t%I64d\n",dwTotalBytes);
}
//使用GetDiskFreeSpace 获取磁盘信息并打印结果
bResult = GetDiskFreeSpace (pszDrive,
&dwSectPerClust,
&dwBytesPerSect,
&dwFreeClusters,
&dwTotalClusters);
if(bResult)
{
printf("\n使用GetDiskFreeSpaceEx获取磁盘空闲信息\n");
printf("空闲的簇数量:\t\t%d\n",dwFreeClusters);
printf("总簇数量:\t\t%d\n",dwTotalClusters);
printf("每簇的扇区数量:\t\t%d\n",dwSectPerClust);
printf("每扇区的容量(字节):\t%I64d\n",dwBytesPerSect);
//空闲簇数 * 空闲扇区数量 * 每扇区的字节数 = 空闲空间
printf("空闲空间(字节):\t\t%I64d\n",(DWORD64) dwFreeClusters *
(DWORD64) dwSectPerClust *
(DWORD64) dwBytesPerSect);
//总簇数 * 总扇区数量 * 每扇区的字节数 = 总容量
printf("磁盘总容量(字节):\t%I64d\n",(DWORD64) dwTotalClusters *
(DWORD64) dwSectPerClust *
(DWORD64) dwBytesPerSect);
}
return bResult;
}
/********************************************
// int main(int agrc, PCHAR agrv[])
// 功能: 应用程序主函数,根据输入参数
// 调用 GetDiskFreeSpaceInfo 函数获取
// 磁盘空闲信息
// 参数: 驱动器根路径 ,比如 “D:\”
********************************************/
int main(int argc, PCHAR argv[])
{
//直接运行的结果是C盘的信息
//DOS 环境下输入启动根路径
GetDiskSpaceInfo (argv[1]);
return 0;