디스크 용량 구하는 방법 API GetDiskFreeSpaceEx
Prototype
BOOL GetDiskFreeSpaceEx (
LPCWSTR lpDirectoryName,
PULARGE_INTEGER lpFreeBytesAvailableToCaller,
PULARGE_INTEGER lpTotalNumberOfBytes,
PULARGE_INTEGER lpTotalNumberBytesOfFreeBytes )
Parameters
lpDirectoryName [in]
- 알고자 하는 저장매체의 디렉토리 이름
- NULL 이면 Object Stroe 의 공간 정보를 가져온다.
lpFreeBytesAvailableToCaller [out]
- 남은 저장공간 용량
lpTotalNumberOfBytes [out]
- 전체 저장공간 용량
lpTotalNumberBytesOfFreeBytes [out]
- 전체 저장공간에서 남은 저장공간 용량
- NULL
Retrun Value
- 0 이면 실패 ( GetLastError() 로 실패 확인 가능 )
- 0 이 아니면 성공
Requirments
Header : winbase.h
Library : coredll.lib
사용예제
string strDrive;
strDrive = "C:\\";
ULARGE_INTEGER _64FreeBytesToCaller, _64TotalBytes, _64FreeBytes;
BOOL bResult = GetDiskFreeSpaceEx((LPCTSTR)strDrive.c_str(), &_64FreeBytesToCaller, &_64TotalBytes, &_64FreeBytes);
if( !bResult ) return FALSE;
//메가바이트 단위로 환산
LONGLONG nDiskFree = (UINT)((_64FreeBytes.QuadPart)/1024/1024);
LONGLONG nDiskTotal = (UINT)((_64TotalBytes.QuadPart)/1024/1024);
다른 방법으로는 GetStoreInformation API가 있는데
Prototype
BOOL GetStoreInformation (LPSTORE_INFORMATION lpsi);
여기서 구조제 STORE_INFORMATION 포인터로 정보를 넘겨 받으면 됩니다.
typedef struct STORE_INFORMATION {
DWORD dwStoreSize;
DWORD dwFreeSize;
} STORE_INFORMATION, *LPSTORE_INFORMATION;
WinCE에서 잘 지원됩니다.