MFC 获取除C盘外,其余磁盘的总空间,及空闲空间

来源:互联网 发布:包装设计公司 知乎 编辑:程序博客网 时间:2024/04/28 22:31
BOOL MyLocalMacIP::GetSpaceInfo(CString &totalspace, CString &usedspace){long long total = 0;long long used = 0;::vector<CString> drivernames;int drivernum = 0;CString str;DWORD size = ::GetLogicalDriveStringsA(0, NULL);if (0 != size){HANDLE heap = ::GetProcessHeap();LPSTR lp = (LPSTR)HeapAlloc(heap, HEAP_ZERO_MEMORY, size*sizeof(TCHAR));::GetLogicalDriveStringsA(size*sizeof(TCHAR), lp);while(0 != *lp ){/* we don't need C:*/int str_num = strcmp((char*)lp, ("C:\\"));if (str_num == 0){lp = strchr(lp, 0)+1;continue;}wchar_t* lp_buffer = conversion.CharToWchar(lp);UINT res = ::GetDriveTypeW(lp_buffer);if(DRIVE_FIXED == res){CString str = lp;drivernames.push_back(str);drivernum++;}delete []lp_buffer;lp = strchr(lp, 0)+1;}}ULARGE_INTEGER FreeSpace, CallSpace, TotalSpace;for (int i = 0; i < drivernum; i++){::GetDiskFreeSpaceEx(drivernames[i], &FreeSpace, &CallSpace, &TotalSpace); total += CallSpace.QuadPart; used += FreeSpace.QuadPart;}string stotal = conversion.IntToString(total);string sused = conversion.IntToString(used);totalspace = CString(stotal.c_str());usedspace = CString(sused.c_str());    return TRUE;}

0 0
原创粉丝点击