mfc 获取C盘信息

void CGetSysInfo::GetDiskInfo(DWORD &dwNum,CString chDriveInfo[])
{
	DWORD DiskCount = 0;  

	//利用GetLogicalDrives()函数可以获取系统中逻辑驱动器的数量,函数返回的是一个32位无符号整型数据。  
	DWORD DiskInfo = GetLogicalDrives();  

	//通过循环操作查看每一位数据是否为1,如果为1则磁盘为真,如果为0则磁盘不存在。  
	while(DiskInfo)  
	{  
		//通过位运算的逻辑与操作,判断是否为1  
		Sleep(10);  
		if(DiskInfo&1)  
		{  
			DiskCount++;  
		}  
		DiskInfo = DiskInfo >> 1;//通过位运算的右移操作保证每循环一次所检查的位置向右移动一位。*/  
	}  

	if (dwNum < DiskCount)  
	{  
		return;//实际的磁盘数目大于dwNum  
	}  
	dwNum = DiskCount;//将磁盘分区数量保存  


	//-------------------------------------------------------------------//  
	//通过GetLogicalDriveStrings()函数获取所有驱动器字符串信息长度  
	int DSLength = GetLogicalDriveStrings(0,NULL);  
	WCHAR* DStr = new WCHAR[DSLength];  
	memset(DStr,0,DSLength);  

	//通过GetLogicalDriveStrings将字符串信息复制到堆区数组中,其中保存了所有驱动器的信息。  
	GetLogicalDriveStrings(DSLength,DStr);  

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

	//读取各驱动器信息,由于DStr内部数据格式是A:\NULLB:\NULLC:\NULL,所以DSLength/4可以获得具体大循环范围  
	for(int i=0;i<DSLength/4;++i)  
	{  
		Sleep(10);  
		CString strdriver = DStr+i*4;  
		CString strTmp,strTotalBytes,strFreeBytes;  
		DType = GetDriveType(strdriver);//GetDriveType函数,可以获取驱动器类型,参数为驱动器的根目录  
		switch (DType)  
		{  
		case DRIVE_FIXED:  
			{  
				strTmp.Format(_T("本地磁盘"));  
			}  
			break;  
		case DRIVE_CDROM:  
			{  
				strTmp.Format(_T("DVD驱动器"));  
			}  
			break;  
		case DRIVE_REMOVABLE:  
			{  
				strTmp.Format(_T("可移动磁盘"));  
			}  
			break;  
		case DRIVE_REMOTE:  
			{  
				strTmp.Format(_T("网络磁盘"));  
			}  
			break;  
		case DRIVE_RAMDISK:  
			{  
				strTmp.Format(_T("虚拟RAM磁盘"));  
			}  
			break;  
		case DRIVE_UNKNOWN:  
			{  
				strTmp.Format(_T("虚拟RAM未知设备"));  
			}  
			break;  
		default:  
			strTmp.Format(_T("未知设备"));  
			break;  
		}  

		//GetDiskFreeSpaceEx函数,可以获取驱动器磁盘的空间状态,函数返回的是个BOOL类型数据  
		fResult = GetDiskFreeSpaceEx (strdriver,  
			(PULARGE_INTEGER)&i64FreeBytesToCaller,  
			(PULARGE_INTEGER)&i64TotalBytes,  
			(PULARGE_INTEGER)&i64FreeBytes);  

		if(fResult)  
		{  
			strTotalBytes.Format(_T("磁盘总容量%fMB"),(float)i64TotalBytes/1024/1024);  
			strFreeBytes.Format(_T("磁盘剩余空间%fMB"),(float)i64FreeBytesToCaller/1024/1024);  
		}  
		else  
		{  
			strTotalBytes.Format(_T(""));  
			strFreeBytes.Format(_T(""));  
		}  
		chDriveInfo[i] = strTmp + _T("(") + strdriver + _T("):") + strTotalBytes + strFreeBytes;  
		si+=4;  
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RuningPigNO1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值