windows程序設計 獲取磁盤容量
阿新 • • 發佈:2018-12-27
容量 info code windows.h cal acea 存儲 pat return
//磁盤分區的總容量(字節)=總簇數*每簇扇區數*每扇區字節數 //磁盤分區的空閑空間(字節)=空閑簇數*每簇扇區數*每扇區字節數 BOOL GetDiskFreeSpace( LPCTSTR lpRootPathName,//指向所要獲取磁盤空間信息的磁盤分區根路徑字符串 LPDWORD lpSectorsPerCluster,//指向存儲每簇扇區數的DWORD類型變量 LPDWORD lpBytesPerSector,//指向存儲每扇區字節數的DWORD類型變量 LPDWORD lpNumberOfFreeClusters,//指向存儲空閑簇的DWORD類型變量 LPDWORD lpTotalNumberOfClusters//指向存儲總簇數的DWORD類型變量 );
/* ************************************************************** * BOOL GetDiskFreeSpaceEx * 功能: * 獲取用戶可用的空閑空間字節數、空閑空間的字節數、磁盤總容量的字節數 * 參數: * LPCTSTR lpDirectoryName * 指向所要獲取磁盤空閑信息的磁盤分區根路徑字符串 * PULARGE_INTEGER lpFreeBytesAvailable * 指向用於存儲可獲得的總字節數量的變量,用戶實際可用的空閑空間 * PULARGE_INTEGER lpTotalNumberOfBytes * 指向存儲磁盤空間總字節數據的變量 * PULARGE_INTEGER lpTotalNUmberOfFreeBytes * 指向存儲磁盤空閑空間總字節的變量 * 返回值: * 返回BOOL值,表示信息獲取是否成功 ***************************************************************/ BOOL GetDiskFreeSpaceEx( LPCTSTR lpDirectoryName,//指向所要獲取磁盤空閑信息的磁盤分區根路徑字符串 PULARGE_INTEGER lpFreeBytesAvailable,//指向用於存儲可獲得的總字節數量的變量 PULARGE_INTEGER lpTotalNumberOfBytes,//指向存儲磁盤空間總字節數據的變量 PULARGE_INTEGER lpTotalNUmberOfFreeBytes//指向存儲磁盤空閑空間總字節的變量 );
代碼演示
#include <windows.h> #include<stdio.h> /* ********************************************************************** * BOOL GetDiskSpaceInfo(LPCSTR pszDrive) * 功能:根據輸入的驅動器,獲取磁盤總容量、空閑空間、簇數量等磁盤信息 * 參數:驅動器根路徑,比如:“D:\” ***********************************************************************/ BOOL GetDiskSpaceInfo(LPCSTR pszDrive) { DWORD64 qwFreeBytesToCaller, qwTotalBytes, qwFreeBytes; DWORD dwSectPerClust, dwBytesPerSect, dwFreeClusters, dwTotalClusters; BOOL bResult; printf("%s\n", pszDrive); //使用GetDiskFreeSpaceEx獲取磁盤信息並打印結果 bResult = GetDiskFreeSpaceExA( pszDrive, (PULARGE_INTEGER)&qwFreeBytesToCaller, (PULARGE_INTEGER)&qwTotalBytes, (PULARGE_INTEGER)&qwFreeBytes ); if(bResult) { printf("使用GetDiskFreeSpaceEx獲取磁盤空間信息\n"); printf("可獲得的空閑空間(字節):\t%I64d\n", qwFreeBytesToCaller); printf("空閑空間(字節):\t\t%I64d\n", qwFreeBytes); printf("磁盤總容量(字節):\t\t%I64d\n", qwTotalBytes); } //使用GetDiskFreeSpace獲取磁盤信息並打印結果 bResult = GetDiskFreeSpaceA( pszDrive, &dwSectPerClust, &dwBytesPerSect, &dwFreeClusters, &dwTotalClusters ); if(bResult) { printf("\n使用GetDiskFreeSpace獲取磁盤空間信息\n"); printf("空閑的簇數量:\t\t%d\n", dwFreeClusters); printf("總簇數量:\t\t%d\n", dwTotalClusters); printf("每簇的扇區數量:\t%d\n", dwSectPerClust); printf("每扇區的容量(字節):\t%d\n", dwBytesPerSect); printf("空閑空間(字節):\t%I64d\n",(DWORD64)dwFreeClusters*(DWORD64)dwSectPerClust*(DWORD64)dwBytesPerSect); printf("磁盤總容量(字節):\t%I64d\n",(DWORD64)dwTotalClusters*(DWORD64)dwSectPerClust*(DWORD64)dwBytesPerSect); } return bResult; } int main(void) { GetDiskSpaceInfo("c:"); return 0; }
windows程序設計 獲取磁盤容量