这篇文章主要介绍了C++遍历磁盘驱动器的示例代码,帮助大家更好的理解和使用c++,感兴趣的朋友可以了解下
#include <stdio.h>
#include <windows.h>
typedef struct tagDRIVER
{
// (1)磁盘盘符
wchar_t disk;
// (2)磁盘总的大小
double all;
// (3)磁盘可用空间
double free;
// (4)磁盘类型(是光盘、硬盘、还是移动硬盘)
int type;
}DRIVER;
void GetDrivers()
{
BOOL fResult;
// 定义 磁盘消息结构体
DRIVER dir;
// 遍历磁盘
for (wchar_t d = 'A'; d <= 'Z'; d++)
{
// 磁盘消息结构体清0
memset(&dir, 0, sizeof(DRIVER));
unsigned _int64 i64FreeBytesToCaller;
unsigned _int64 i64TotalBytes;
unsigned _int64 i64FreeBytes;
TCHAR szTemp[3] = { d, ':', '\0' };
// 获取磁盘类型
UINT uType = GetDriveTypeW(szTemp);
// DRIVE_UNKNOWN 无法确定驱动器类型。
// DRIVE_NO_ROOT_DIR 根路径无效; 例如,指定路径上没有安装卷。
// DRIVE_REMOVABLE 驱动器有可移动介质; 例如,软盘驱动器,拇指驱动器或闪存卡读卡器。
// DRIVE_FIXED 驱动器有固定的媒体; 例如,硬盘驱动器或闪存驱动器。
// DRIVE_REMOTE 该驱动器是远程(网络)驱动器。
// DRIVE_CDROM 该驱动器是一个CD-ROM驱动器。
// DRIVE_RAMDISK 驱动器是RAM磁盘。
switch (uType)
{
case DRIVE_FIXED:
{
// 硬盘是1
dir.type = 1;
break;
}
case DRIVE_CDROM:
{
// 光盘是2
dir.type = 2;
break;
}
case DRIVE_REMOTE:
{
// 移动硬盘是3
dir.type = 3;
break;
}
default:
{
continue;
}
}
// GetDiskFreeSpaceEx获取与一个磁盘的组织以及剩余空间容量有关的信息
fResult = GetDiskFreeSpaceEx(szTemp, (PULARGE_INTEGER)&i64FreeBytesToCaller, (PULARGE_INTEGER)&i64TotalBytes, (PULARGE_INTEGER)&i64FreeBytes);
// 盘符
dir.disk = d;
if (fResult)
{
dir.all = (double)(i64TotalBytes / 1024.0 / 1024 / 1024);
dir.free = (double)(i64FreeBytesToCaller / 1024.0 / 1024 / 1024);
}
else
{
dir.all = 0.0;
dir.free = 0.0;
}
printf("%C盘:共%.2fGB, 可用%.2fGB, 磁盘类型:%d\n", dir.disk, dir.all, dir.free, dir.type);
}
}
int main()
{
GetDrivers();
getchar();
return 0;
}