2009-07-02 11 views
9

Ho bisogno di trovare la dimensione del cluster del disco rigido degli utenti, attraverso C o C++. Il disco rigido utilizza NTFS (anche se mi piacerebbe sapere come è fatto anche su altri file system).Ottenere le dimensioni del cluster di un disco rigido (tramite codice)

Immagino che quello di cui ho bisogno sia una combinazione di chiamate API win32, ma non so quale.

Ad esempio, digitando "fsutil fsinfo ntfsinfo c:" nella console di Windows si ottiene "Byte per cluster", che è ciò di cui ho bisogno. (Anche se per ovvie ragioni, non voglio correre il comando e analizzare il suo output.)

+0

Tenete a mente che questo non ti dice un bel po '. File di piccole dimensioni possono essere memorizzati nel nodo della directory stesso. – MSalters

+0

FWIW, la dimensione del cluster di un file system viene talvolta definita anche come dimensione della "unità di allocazione", ad esempio http://msdn.microsoft.com/en-us/library/aa383356(VS.85).aspx. – reuben

risposta

14

Utilizzare il GetDiskFreeSpace

BOOL WINAPI GetDiskFreeSpace(
    __in LPCTSTR lpRootPathName, 
    __out LPDWORD lpSectorsPerCluster, // <-- 
    __out LPDWORD lpBytesPerSector, // <-- 
    __out LPDWORD lpNumberOfFreeClusters, 
    __out LPDWORD lpTotalNumberOfClusters 
); 
Problemi correlati