zoukankan      html  css  js  c++  java
  • 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, ':', '' };
            // 获取磁盘类型
            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
    ", dir.disk, dir.all, dir.free, dir.type);
        }
    }
    
    int main()
    {
        GetDrivers();
        getchar();
        return 0;
    }
  • 相关阅读:
    linux环境变量
    oracle 11g RAC日志分布
    解决Centos下载文件出现”wget: unabl(www.111cn.net)e to resolve host address”
    转载:root用户无法删除文件 rm: cannot remove Readonly file system
    占用端口
    数学小记
    很多问题的解决都是从简单的方式入手不断优化的
    机器学习之算法学习
    机器学习之二分类
    机器学习之模型评估(损失函数的选择)
  • 原文地址:https://www.cnblogs.com/duxie/p/11204081.html
Copyright © 2011-2022 走看看