• 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;
    }
  • 相关阅读:
    GC 案例收集整理
    Netty ByteBuf泄露定位修改。
    使用Modernizr 检测HTML5和CSS3浏览器支持功能 (转自http://www.adobe.com/cn/devnet/dreamweaver/articles/using-modernizr.html)
    drupal网站邮件发送功能的实现
    Customizing and Overriding User Login page, Register, and Password Reset in Drupal 6 and 7
    WordPress网站迁移
    HTTP协议详解 (转)
    HTTP协议
    Apache服务器放置多个站点的配置方法 (转)
    Apache禁止或允许固定IP访问特定目录、文件、URL
  • 原文地址:https://www.cnblogs.com/duxie/p/11204081.html
Copyright © 2020-2023  润新知