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++遍历磁盘驱动器的资料请关注我们其它相关文章!

(0)

相关推荐

  • C/C++ 监控磁盘与目录操作的示例

    遍历磁盘容量: #include <stdio.h> #include <Windows.h> void GetDrivesType(const char* lpRootPathName) { UINT uDriverType = GetDriveType(lpRootPathName); switch (uDriverType) { case DRIVE_UNKNOWN:puts("未知磁盘"); break; case DRIVE_NO_ROOT_DIR:

  • C++非递归遍历磁盘文件和递归遍历磁盘文件的程序示例

    1:非递归方法: 复制代码 代码如下: // File Name: CSearch.h #pragma once#include <vector>#include <atlstr.h>#include <stack> class Search{private:    std::vector<CString> m_strPath;        // 保存查找到了文件路径    std::vector<CString> m_strSearchNam

  • 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

  • java数组遍历 删除remove(示例代码)

    废话不多说,直接上代码 复制代码 代码如下: package com.b; import java.util.ArrayList; //数组遍历删除,添加 public class Core2 {     private String name;     private int num;     private String color; public Core2() {     } public Core2(String a, int b, String c) {         name =

  • python和pywin32实现窗口查找、遍历和点击的示例代码

    Pywin32是一个Python库,为python提供访问Windows API的扩展,提供了齐全的windows常量.接口.线程以及COM机制等等. 1.通过类名和标题查找窗口句柄,并获得窗口位置和大小 import win32gui import win32api classname = "MozillaWindowClass" titlename = "百度一下,你就知道 - Mozilla Firefox" #获取句柄 hwnd = win32gui.Fin

  • c# 遍历获取所有文件的示例代码

    在使用C#进行桌面应用开发中,经常会有对文件进行操作的情况,这时可能会需要对文件夹进行文件扫描,获取所有文件 做法如下 /// <summary> /// 遍历获取所有文件 /// </summary> /// <param name="filePathByForeach"></param> /// <param name="result"></param> public static void

  • C++实现图的遍历算法(DFS,BFS)的示例代码

    目录 图的定义 图的相关术语 图的创建(邻接矩阵)---结构体 图的创建(邻接矩阵)---邻接矩阵的创建 图的创建(邻接表)---结构体 图的创建(邻接表)---邻接表的创建 对邻接矩阵进行深度优先遍历 对邻接矩阵进行广度优先遍历 对邻接表进行深度优先遍历 对邻接表进行广度优先遍历 整体代码 结果展示 图的定义 图由顶点集V(G)和边集E(G)组成,记为G=(V,E).其中E(G)是边的有限集合,边是顶点的无序对(无向图)或有序对(有向图).对于有向图来说,E(G)是有向边(也称弧(Arc))的

  • 利用正则表达式将字符串分组示例代码

    前言 最近工作中遇到一个问题,需求是碰到'122333<<<<'这种字符串,要将其连贯的部分取出,得出['1', '22', '333', '<<<<']这样的列表,能想到的常规办法,遍历字符串,后一个与前一个逐个比较,这样真的很麻烦!又想到了另外两种方法,话不多说了,来一起看看详细的示例代码: 一.实际上可以借助itertools模块的groupby()方法来处理: import itertools Str = '122333<<<<

  • 利用Java快速查找21位花朵数示例代码

    前言 本文主要给大家介绍了关于利用Java快速查找21位花朵数的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 以前备赛的时候遇到的算法题,求所有21位花朵数,分享一下,供大家参考,效率已经很高了. 示例代码 package com.jianggujin; import java.math.BigInteger; import java.util.ArrayList; import java.util.List; /** * 水仙花数 * * @author jian

  • FileSystemObject 示例代码

    在本节描述的示例代码,提供真实的例子来示范在 FileSystemObject 对象模式中可用的许多功能.该代码显示了如何一起使用对象模式的所有功能,以及如何在您自己的代码中有效地使用这些功能. 请注意,由于该代码是极一般的,所以要使该代码能够真正在您的机器上运行,可能需要一些其他代码和小小的变更.这些改变之所以必要,是因为在 Active Server Pages 和 Windows Scripting Host 之间,为输入和输出给用户采用了不同的方法. 要在 Active Server P

  • Angularjs单选框相关的示例代码

    本文介绍了Angularjs单选框相关的示例代码,分享给大家.具体如下: 使用angular1.6.5 1.ng 获取ng-repeat遍历出来的radio的value 1)普通形式(不使用ng-repeat) 可以正常显示 <input type="radio" name="t1" ng-model="demo" value="a">a <br> <input type="radio&

  • 用vue的双向绑定简单实现一个todo-list的示例代码

    前言 最近在学习vue框架的基本原理,看了一些技术博客以及一些对vue源码的简单实现,对数据代理.数据劫持.模板解析.变异数组方法.双向绑定有了更深的理解.于是乎,尝试着去实践自己学到的知识,用vue的一些基本原理实现一个简单的todo-list,完成对深度复杂对象的双向绑定以及对数组的监听,加深了对vue基本原理的印象. github地址:todo-list 学习链接 前排感谢以下文章,对我理解vue的基本原理有很大的帮助! 剖析vue实现原理,自己动手实现mvvm by DMQ 对vue早期

随机推荐