사용가능한 모든 하드 디스크에 대해서 요량을 출력하는 소스입니다.
약간 다듬어서 사용하면 될 것 같습니다.
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);
}
}
'C & C++ > C & C++' 카테고리의 다른 글
데이터 상호 변환(문자열, 색상) (0) | 2011.01.26 |
---|---|
[멤버함수] MFC 주요 클래스 멤버함수, 변수 (0) | 2011.01.26 |
rand() 함수 (0) | 2010.04.26 |
문장에서 문자수 계산하는 프로그램 (0) | 2009.12.18 |
string.h에 있는 함수들에 대한 설명 (0) | 2009.12.18 |
댓글