当前位置: 移动技术网 > IT编程>开发语言>C/C++ > C++遍历磁盘驱动器的示例代码

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

2021年01月03日 C/C++ 我要评论
#include <stdio.h>#include <windows.h>typedef struct tagdriver{ // (1)磁盘盘符 wchar_t dis
#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++遍历磁盘驱动器的资料请关注移动技术网其它相关文章!

(0)
打赏 微信扫一扫 微信扫一扫

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。

发表评论

验证码:
移动技术网