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

 更新时间:2021年01月03日 12:21:01   作者:凌冷  
这篇文章主要介绍了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;
}

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

相关文章

  • C++中宏的使用问题详解

    C++中宏的使用问题详解

    宏替换是C/C++系列语言的技术特色,C/C++语言提供了强大的宏替换功能,源代码在进入编译器之前,要先经过一个称为“预处理器”的模块,这个模块将宏根据编译参数和实际编码进行展开,展开后的代码才正式进入编译器,进行词法分析、语法分析等等。
    2016-05-05
  • C语言实现扫雷游戏的方法

    C语言实现扫雷游戏的方法

    这篇文章主要为大家详细介绍了C语言实现扫雷游戏的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • fatal error LNK1104: 无法打开文件“libc.lib”的解决方法

    fatal error LNK1104: 无法打开文件“libc.lib”的解决方法

    本篇文章是对fatal error LNK1104: 无法打开文件“libc.lib”的解决方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • 深入解析C++编程中类的封装特性

    深入解析C++编程中类的封装特性

    这篇文章主要介绍了深入解析C++编程中类的封装特性,是C++入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • C++聚合体初始化aggregate initialization详细介绍

    C++聚合体初始化aggregate initialization详细介绍

    这篇文章主要介绍了C++聚合体初始化aggregate initialization,C++有很多初始化对象的方法。其中之一叫做 聚合体初始化(aggregate initialization) ,这是聚合体专有的一种初始化方法
    2023-02-02
  • C语言一级指针二级指针和三级指针区别及使用详解

    C语言一级指针二级指针和三级指针区别及使用详解

    这篇文章主要为大家介绍了C语言一级指针二级指针和三级指针,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • C/C++ break和continue区别及使用方法

    C/C++ break和continue区别及使用方法

    这篇文章主要介绍了C/C++ break和continue区别及使用方法的相关资料,需要的朋友可以参考下
    2017-07-07
  • C++入门之模板基础讲解

    C++入门之模板基础讲解

    这篇文章主要为大家介绍了C++入门之模板基础,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • 详解C++编程中类模板的相关使用知识

    详解C++编程中类模板的相关使用知识

    这篇文章主要介绍了详解C++编程中类模板的相关使用知识,包括函数的参数类型替换等方法,需要的朋友可以参考下
    2015-09-09
  • C++版本简易Flappy bird

    C++版本简易Flappy bird

    这篇文章主要介绍了C++版本简易Flappy bird的相关资料,需要的朋友可以参考下
    2015-03-03

最新评论