本文共 1945 字,大约阅读时间需要 6 分钟。
void test2(){ DWORD dwLen = GetLogicalDriveStrings(0, NULL); //获取系统字符串长度. char * pszDriver = new char[dwLen]; //构建一个相应长度的数组. GetLogicalDriveStrings(dwLen, pszDriver); //获取盘符字符串. vectorv; 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; }}
转载地址:http://vcwdb.baihongyu.com/