#include <stdio.h>
#include <windows.h>
int main()
{
// 获取当前所在的盘符,返回相应的位组成的整数值
DWORD bit = GetLogicalDrives();
// 以字符串的形式,返回当前系统中的所有盘符[重点]
WCHAR szName[MAX_PATH] = { 0 };
GetLogicalDriveStrings(MAX_PATH, szName);
for (int i = 0; szName[i] != '\0' && i < MAX_PATH; i++)
{
// 输出当前的盘符
OutputDebugString(&szName[i]);
// 输出对应磁盘的类型
auto Type = GetDriveType(&szName[i]);
if (DRIVE_FIXED == Type)
OutputDebugString(L"\t 不可移动磁盘\n");
// 根据盘符名获取磁盘容量
DWORD 每簇扇区数 = 0;
DWORD 扇区容量 = 0;
DWORD 空闲簇 = 0;
DWORD 所有簇 = 0;
GetDiskFreeSpace(&szName[i], &每簇扇区数, &扇区容量, &空闲簇, &所有簇);
printf(" 磁盘容量%.2f",
(所有簇 / 1024.0) * 每簇扇区数 * 扇区容量 / 1024 / 1024);
printf(" 空闲容量%.2f",
(空闲簇 / 1024.0) * 每簇扇区数 * 扇区容量 / 1024 / 1024);
printf("\n\n\n");
i += wcslen(&szName[i]);
}
return 0;
}