基于visual c++之windows核心编程代码分析(13)获取磁盘可用空间信息

我们在进行Windows核心编程,经常要用到获取磁盘可用空间信息。我们来亲自编程实践获取磁盘可用空间信息,请见代码实现与注释讲解

 

[cpp]  view plain  copy
  1. /* 头文件 */  
  2. #include   
  3. #include   
  4.   
  5. /* ************************************ 
  6.  * BOOL GetDiskSpaceInfo(LPCSTR pszDrive 
  7.  * 功能   根据输入的驱动器,获取磁盘总容量 
  8.  *          空闲空间、簇数量等磁盘信息 
  9.  * 参数   驱动器根路径,比如“D:\”。 
  10.  **************************************/  
  11. BOOL GetDiskSpaceInfo(LPCSTR pszDrive)  
  12. {  
  13.     DWORD64 qwFreeBytesToCaller, qwTotalBytes, qwFreeBytes;  
  14.     DWORD dwSectPerClust, dwBytesPerSect, dwFreeClusters,  dwTotalClusters;  
  15.     BOOL bResult;  
  16.       
  17.     //使用GetDiskFreeSpaceEx获取磁盘信息并打印结果  
  18.     bResult = GetDiskFreeSpaceEx (pszDrive,  
  19.         (PULARGE_INTEGER)&qwFreeBytesToCaller,  
  20.         (PULARGE_INTEGER)&qwTotalBytes,  
  21.         (PULARGE_INTEGER)&qwFreeBytes);  
  22.   
  23.     if(bResult)   
  24.     {  
  25.         printf("使用GetDiskFreeSpaceEx获取磁盘空间信息\n");  
  26.         printf("可获得的空闲空间(字节): \t%I64d\n", qwFreeBytesToCaller);  
  27.         printf("空闲空间(字节): \t\t%I64d\n", qwFreeBytes);  
  28.         printf("磁盘总容量(字节): \t\t%I64d\n", qwTotalBytes);  
  29.     }  
  30.   
  31.     //使用GetDiskFreeSpace获取磁盘信息并打印结果  
  32.     bResult = GetDiskFreeSpace (pszDrive,   
  33.         &dwSectPerClust,   
  34.         &dwBytesPerSect,  
  35.         &dwFreeClusters,   
  36.         &dwTotalClusters);  
  37.   
  38.     if(bResult)   
  39.     {  
  40.         printf("\n使用GetDiskFreeSpace获取磁盘空间信息\n");  
  41.         printf("空闲的簇数量 : \t\t\t%d\n",dwFreeClusters);  
  42.         printf("总簇数量 : \t\t\t%d\n",dwTotalClusters);  
  43.         printf("每簇的扇区数量 : \t\t%d\n",dwSectPerClust);  
  44.         printf("每扇区的容量(字节): \t\t%d\n",dwBytesPerSect);  
  45.         printf("空闲空间(字节): \t\t%I64d\n",   
  46.             (DWORD64)dwFreeClusters*  
  47.             (DWORD64)dwSectPerClust*(DWORD64)dwBytesPerSect);  
  48.         printf("磁盘总容量(字节): \t\t%I64d",  
  49.             (DWORD64)dwTotalClusters*  
  50.             (DWORD64)dwSectPerClust*(DWORD64)dwBytesPerSect);  
  51.     }  
  52.     return bResult;  
  53. }  
  54.   
  55. /* ************************************ 
  56.  * int main( int argc, PCHAR argv[] ) 
  57.  * 功能   应用程序主函数,根据输入参数 
  58.  *          调用GetDiskSpaceInfo函数获取 
  59.  *          磁盘空间信息 
  60.  * 参数   驱动器根路径,比如“D:\”。 
  61.  **************************************/  
  62. int main(int argc, PCHAR argv[])  
  63. {  
  64.     GetDiskSpaceInfo (argv[1]);  
  65. }  

你可能感兴趣的:(基于visual c++之windows核心编程代码分析(13)获取磁盘可用空间信息)