사용가능한 모든 하드 디스크에 대해서 요량을 출력하는 소스입니다.
약간 다듬어서 사용하면 될 것 같습니다.
void GetHddSpace(CString strDir, CString& strTotalSize, CString& strUsingSize, CString& strFreeSize)
{
ULARGE_INTEGER m_pFreeSpace; // 남은용량
ULARGE_INTEGER m_pTotalSpace; // 전체용량
ULARGE_INTEGER m_pWritedSpace; // 쓰고있는용량
GetDiskFreeSpaceEx(
strDir, // directory name
&m_pFreeSpace, // 남은용량
&m_pTotalSpace, // 전체용량
&m_pWritedSpace // 쓰고있는용량
);
m_pWritedSpace.QuadPart = m_pTotalSpace.QuadPart - m_pFreeSpace.QuadPart;
//strBuf.Format(_T("Total: %I64d \nUsing: %I64d \nFree: %I64d"),m_pTotalSpace.QuadPart/GBYTE, m_pWritedSpace.QuadPart/GBYTE, m_pFreeSpace.QuadPart/GBYTE);
ULONGLONG GBSize = m_pTotalSpace.QuadPart/(1024*1024*1024);
ULONGLONG MBSize = ((m_pTotalSpace.QuadPart%(1024*1024*1024))*10)/(1024*1024*1024);
strTotalSize.Format("%I64d.%I64dGB", m_pTotalSpace.QuadPart/(1024*1024*1024), ((m_pTotalSpace.QuadPart%(1024*1024*1024))*10)/(1024*1024*1024));
strUsingSize.Format("%I64d.%I64dGB", m_pWritedSpace.QuadPart/(1024*1024*1024), ((m_pWritedSpace.QuadPart%(1024*1024*1024))*10)/(1024*1024*1024));
strFreeSize.Format("%I64d.%I64dGB", m_pFreeSpace.QuadPart/(1024*1024*1024), ((m_pFreeSpace.QuadPart%(1024*1024*1024))*10)/(1024*1024*1024));
}
int GetValidDrives(CStringArray& rarrayDrives) const
{
rarrayDrives.RemoveAll();
DWORD dwDrives = ::GetLogicalDrives();
for (int n = 0; n < 26; n++)
{
BOOL bAvail = (dwDrives & (0x01 << n) );
if (bAvail)
{
TCHAR chDrive = (TCHAR)( ((int)_T('A')) + n);
CString sDrive;
sDrive.Format( _T("%c:\\"), chDrive);
if(GetDriveType(sDrive) == DRIVE_FIXED)
rarrayDrives.Add(sDrive);
}
}
return rarrayDrives.GetSize();
}
void OnBtnHdd()
{
// TODO: Add your control notification handler code here
CString strTotal, strUsing, strFree;
CString strTmp;
CStringArray strHddList;
GetValidDrives(strHddList);
for(int i=0; i<strHddList.GetSize(); i++)
{
GetHddSpace(strHddList[i], strTotal, strUsing, strFree);
strTmp.Format("드라이브:%s\n총 용량:%s\n사용중인 용량:%s\n잔여 용량:%s", strHddList[i], strTotal, strUsing, strFree);
AfxMessageBox(strTmp);
}
}
'프로그래밍 팁 > etc' 카테고리의 다른 글
바로가기 아이콘 생성 (0) | 2010.05.14 |
---|---|
메모리 정보 확인 (0) | 2010.04.20 |
네트워크 정보(사운드카드, 맥어드레스, IP주소) (0) | 2010.04.17 |
printf와 같은 포멧 (0) | 2010.04.15 |
URLDownloadToFile 예제 (0) | 2010.04.13 |