2009-07-02 8 views
9

मुझे सी या सी ++ के माध्यम से उपयोगकर्ताओं को हार्ड ड्राइव के क्लस्टर आकार को खोजने की आवश्यकता है। हार्ड ड्राइव एनटीएफएस का उपयोग करता है (हालांकि मैं यह जानना चाहता हूं कि यह अन्य फाइल सिस्टम पर भी कैसे किया जाता है)।हार्ड ड्राइव (कोड के माध्यम से) के क्लस्टर आकार को प्राप्त करना

मुझे लगता है कि मुझे Win32 API कॉल के कुछ संयोजन की आवश्यकता है, लेकिन मुझे नहीं पता कि कौन सा है।

उदाहरण के लिए, विंडोज कंसोल में "fsutil fsinfo ntfsinfo c:" टाइपिंग आपको "बाइट प्रति क्लस्टर" देता है, जो मुझे चाहिए। (हालांकि स्पष्ट कारणों के लिए, मैं नहीं चाहता कि कि आदेश चला और यह उत्पादन है पार्स करने के लिए चाहते हैं।)

+0

ध्यान रखें कि यह आप के लिए एक बहुत नहीं बताता है। छोटी फ़ाइलों को निर्देशिका नोड में ही संग्रहीत किया जा सकता है। – MSalters

+0

एफडब्ल्यूआईडब्ल्यू, एक फाइल सिस्टम के क्लस्टर आकार को कभी-कभी इसके "आवंटन इकाई" आकार के रूप में भी जाना जाता है, उदाहरण: 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 
); 
संबंधित मुद्दे