您的位置:首页 > 其它

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

2016-12-22 16:42 459 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: