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语言静态函数库的制作和使用。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • C++项目基于HuffmanTree实现文件的压缩与解压缩功能

    C++项目基于HuffmanTree实现文件的压缩与解压缩功能

    这篇文章主要介绍了C++项目基于HuffmanTree实现文件的压缩与解压缩功能,本文给大家提到文件压缩的概念介绍及压缩方法,通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2021-08-08
  • C++ SOCKET多线程实现聊天小程序

    C++ SOCKET多线程实现聊天小程序

    这篇文章主要为大家详细介绍了C++ SOCKET多线程实现聊天小程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • QT实现视频传输功能

    QT实现视频传输功能

    这篇文章主要为大家详细介绍了QT实现视频传输功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • 理解数据结构

    理解数据结构

    本文是对数据结构对编程的重要性,数据结构对数据存储,数据处理,内存工作,从宏观上理解数据结构
    2016-07-07
  • C语言数据结构与算法之链表(二)

    C语言数据结构与算法之链表(二)

    在这篇文章中,我们将抛开令人头秃的指针和结构体,我们将另外使用一种数组来实现的方式,叫做模拟链表。让来跟随小编一起学习学习吧
    2021-12-12
  • 用C实现PHP扩展 Image_Tool 图片常用处理工具类的使用

    用C实现PHP扩展 Image_Tool 图片常用处理工具类的使用

    该扩展是基于ImageMagick基础实现的,图片操作调用的是ImageMagick API
    2013-04-04
  • 详解C++编程中对于函数的基本使用

    详解C++编程中对于函数的基本使用

    这篇文章主要介绍了详解C++编程中对于函数的使用,包括函数的参数和返回值以及调用等基本的知识点,需要的朋友可以参考下
    2015-09-09
  • C/C++编译报错printf was not declared in this scope问题及解决

    C/C++编译报错printf was not declared in 

    这篇文章主要介绍了C/C++编译报错printf was not declared in this scope问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • C语言的getc()函数和gets()函数的使用对比

    C语言的getc()函数和gets()函数的使用对比

    这篇文章主要介绍了C语言的getc()函数和gets()函数的使用对比,从数据流中一个是读取字符一个是读取字符串,需要的朋友可以参考下
    2015-08-08

最新评论