1. #include <stdio.h>
    2. #include <windows.h>
    3. int main()
    4. {
    5. // 获取当前所在的盘符,返回相应的位组成的整数值
    6. DWORD bit = GetLogicalDrives();
    7. // 以字符串的形式,返回当前系统中的所有盘符[重点]
    8. WCHAR szName[MAX_PATH] = { 0 };
    9. GetLogicalDriveStrings(MAX_PATH, szName);
    10. for (int i = 0; szName[i] != '\0' && i < MAX_PATH; i++)
    11. {
    12. // 输出当前的盘符
    13. OutputDebugString(&szName[i]);
    14. // 输出对应磁盘的类型
    15. auto Type = GetDriveType(&szName[i]);
    16. if (DRIVE_FIXED == Type)
    17. OutputDebugString(L"\t 不可移动磁盘\n");
    18. // 根据盘符名获取磁盘容量
    19. DWORD 每簇扇区数 = 0;
    20. DWORD 扇区容量 = 0;
    21. DWORD 空闲簇 = 0;
    22. DWORD 所有簇 = 0;
    23. GetDiskFreeSpace(&szName[i], &每簇扇区数, &扇区容量, &空闲簇, &所有簇);
    24. printf(" 磁盘容量%.2f",
    25. (所有簇 / 1024.0) * 每簇扇区数 * 扇区容量 / 1024 / 1024);
    26. printf(" 空闲容量%.2f",
    27. (空闲簇 / 1024.0) * 每簇扇区数 * 扇区容量 / 1024 / 1024);
    28. printf("\n\n\n");
    29. i += wcslen(&szName[i]);
    30. }
    31. return 0;
    32. }