2009-07-02 8 views
9

Je dois trouver la taille de cluster du disque dur de l'utilisateur, via C ou C++. Le disque dur utilise NTFS (bien que j'apprécierais de savoir comment cela se fait sur d'autres systèmes de fichiers).Obtention de la taille de cluster d'un disque dur (via le code)

Je suppose que ce dont j'ai besoin est une combinaison d'appels API Win32, mais je ne sais pas lequel. Par exemple, en tapant "fsutil fsinfo ntfsinfo c:" dans la console Windows, vous obtenez "Bytes per cluster", ce dont j'ai besoin. (Bien que pour des raisons évidentes, je ne veux pas exécuter cette commande et analyser sa sortie.)

+0

Gardez à l'esprit que cela ne vous dit pas beaucoup. Les petits fichiers peuvent être stockés dans le noeud de répertoire lui-même. – MSalters

+0

FWIW, la taille de cluster d'un système de fichiers est parfois appelée "taille d'unité d'allocation", par exemple: http://msdn.microsoft.com/en-us/library/aa383356(VS.85).aspx. – reuben

Répondre

14

Utilisez le GetDiskFreeSpace

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