1. 程式人生 > >windows程序設計 獲取磁盤容量

windows程序設計 獲取磁盤容量

容量 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程序設計 獲取磁盤容量