C++ 获取磁盘盘符以及剩余空间

本文展示了一个使用C++编程语言获取系统硬盘信息的方法。通过调用Windows API函数,如GetLogicalDriveStrings、GetDriveType和GetDiskFreeSpaceEx,程序能够列出所有可用的驱动器,并获取它们的类型(如硬盘、光驱、可移动磁盘等)以及磁盘的总空间和可用空间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

void test2()
{
    DWORD dwLen = GetLogicalDriveStrings(0, NULL);	//获取系统字符串长度.
    char * pszDriver = new char[dwLen];				//构建一个相应长度的数组.
    GetLogicalDriveStrings(dwLen, pszDriver);		//获取盘符字符串.
    vector<string> v;
    while (*pszDriver != '\0')
    {
        cout << pszDriver << " ---- " << endl;
        v.push_back(pszDriver);
        pszDriver += strlen(pszDriver) + 1;			//定位到下一个字符串.加一是为了跳过'\0'字符串.
    }

    int DType;
    int si = 0;
    BOOL fResult;
    unsigned _int64 i64FreeBytesToCaller;
    unsigned _int64 i64TotalBytes;
    unsigned _int64 i64FreeBytes;

    for (int i = 0; i < dwLen / 4; ++i)
        //为了显示每个驱动器的状态,则通过循环输出实现,由于DStr内部保存的数据是A:\NULLB:\NULLC:\NULL,这样的信息,所以DSLength/4可以获得具体大循环范围
    {
        DType = GetDriveType(v[i].c_str());
        //GetDriveType函数,可以获取驱动器类型,参数为驱动器的根目录
        if (DType == DRIVE_FIXED)
        {
            cout << "硬盘";
        }
        else if (DType == DRIVE_CDROM)
        {
            cout << "光驱";
        }
        else if (DType == DRIVE_REMOVABLE)
        {
            cout << "可移动式磁盘";
        }
        else if (DType == DRIVE_REMOTE)
        {
            cout << "网络磁盘";
        }
        else if (DType == DRIVE_RAMDISK)
        {
            cout << "虚拟RAM磁盘";
        }
        else if (DType == DRIVE_UNKNOWN)
        {
            cout << "未知设备";
        }

        fResult = GetDiskFreeSpaceEx(
            v[i].c_str(),
            (PULARGE_INTEGER)&i64FreeBytesToCaller,
            (PULARGE_INTEGER)&i64TotalBytes,
            (PULARGE_INTEGER)&i64FreeBytes);
        //GetDiskFreeSpaceEx函数,可以获取驱动器磁盘的空间状态,函数返回的是个BOOL类型数据
        if (fResult)//通过返回的BOOL数据判断驱动器是否在工作状态
        {
            cout << " totalspace:" << (float)i64TotalBytes / 1024 / 1024 << " MB";//磁盘总容量
            cout << " freespace:" << (float)i64FreeBytesToCaller / 1024 / 1024 << " MB";//磁盘剩余空间
        }
        else
        {
            cout << " 设备未准备好";
        }
        cout << endl;
        si += 4;
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值