참조 : https://msdn.microsoft.com/ko-kr/library/ms890887.aspx
역시 MS에서는 웬만한건 다 오픈해 준다. 남아있는 하드디스크 용량까지도.
바로... GetDiskFreeSpace (!!!)
함수 원형은
GetDiskFreeSpaceA( |
lpRootPathName : 탐색할 드라이브 경로 (최상위 root)
lpSectorsPerCluster : 클러스터당 섹터의 수
lpBytesPerSector : 섹터당 바이트 크기
lpNumberOfFreeClusters : 잔여용량 클러스터의 갯수
lpTotalNumberOfClusters : 전체 클러스터 갯수
-> 즉, 크기를 구할때 클러스터수 * lpSectorsPerCluster * lpBytesPerSector 로 구할 수 있다.
근데 위 함수는 읽어오는 용량 제한이 있다. 그래서.. Ex가 등장(!)했다. 함수 형태는 아래와 같다.
BOOL GetDiskFreeSpaceEx( |
lpDirectoryName : 탐색할 드라이브의 최상위 root.
lpFreeBytesAvailableToCaller : 호출한 스레드에서 사용가능한 최대의 용량. (사실상 free space)
lpTotalNumberOfBytes : 드라이브의 총 용량
lpTotalNumberOfFreeBytes : 드라이브의 잔여 용량. NULL이 가능하다.
ULARGE_INTEGER를 사용한다. 호출 예제는 아래와 같다.
ULARGE_INTEGER uiFreeSpace, uiTotalSpace, uiTotalFreeByte; |
단위는 byte이므로 필요에 따라 단위 변환을 하면 된다.
네트워크 드라이브도 찾아온다. 와우.
댓글