C++遍历磁盘驱动器的示例代码

时间:2022-09-11 22:33:29
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#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;
}

以上就是C++遍历磁盘驱动器的示例代码的详细内容,更多关于C++遍历磁盘驱动器的资料请关注服务器之家其它相关文章!

原文链接:https://www.cnblogs.com/duxie/p/11204081.html