2009-07-02 4 views
9

C 또는 C++를 통해 사용자 하드 드라이브의 클러스터 크기를 찾아야합니다. 하드 드라이브는 NTFS를 사용합니다 (다른 파일 시스템에서도 어떻게 작동하는지 알고있을 것입니다).하드 드라이브의 클러스터 크기 얻기 (코드를 통해)

내가 필요한 것은 win32 API 호출의 일부 조합 인 것 같지만 어떤 것이 있는지 모른다.

예를 들어 Windows 콘솔에 "fsutil fsinfo ntfsinfo c :"를 입력하면 "클러스터 당 바이트"가 필요한데, 이는 필자에게 필요한 것입니다. (분명한 이유, 내가 그 명령을 실행하고 출력의 구문 분석 싶지 않아 있지만.)

+0

이 당신에게 훨씬 말하지 않는다는 것을 명심하십시오. 작은 파일은 디렉토리 노드 자체에 저장할 수 있습니다. – MSalters

+0

FWIW, 파일 시스템의 클러스터 크기는 때때로 "할당 단위"크기라고도합니다 (예 : http://msdn.microsoft.com/en-us/library/aa383356(VS.85).aspx). – reuben

답변

14

사용 GetDiskFreeSpace

BOOL WINAPI GetDiskFreeSpace(
    __in LPCTSTR lpRootPathName, 
    __out LPDWORD lpSectorsPerCluster, // <-- 
    __out LPDWORD lpBytesPerSector, // <-- 
    __out LPDWORD lpNumberOfFreeClusters, 
    __out LPDWORD lpTotalNumberOfClusters 
); 
관련 문제