VC 獲取盤符容量信息

在VC中獲得盤符容量信息的函數只要有兩個,分別爲:

 BOOL WINAPI GetDiskFreeSpace(
  __in          LPCTSTR lpRootPathName,                                                 //傳入用戶在該磁盤的盤符
  __out         LPDWORD lpSectorsPerCluster,                                        //返回一簇有多少扇區
  __out         LPDWORD lpBytesPerSector,                                            //返回一個扇區有多個字節
  __out         LPDWORD lpNumberOfFreeClusters,                                //返回當前盤符剩餘多少空間
  __out         LPDWORD lpTotalNumberOfClusters                                //當前盤符有多少空間
);

 

BOOL WINAPI GetDiskFreeSpaceEx(
  __in          LPCTSTR lpDirectoryName,                                               //傳入用戶在該磁盤的盤符
  __out         PULARGE_INTEGER lpFreeBytesAvailable,                      //當前用戶可用多少空間
  __out         PULARGE_INTEGER lpTotalNumberOfBytes,                   //當前盤符有多空間
  __out         PULARGE_INTEGER lpTotalNumberOfFreeBytes             //當前盤符一共剩餘多少空間
);

 

第一個函數用於當前盤符小於2GB容量,後一個函數用處比較廣。
下面代碼使用第二個函數獲得信息。

CString msgStr; 
 ULARGE_INTEGER a1 ,a2 ,a3;
 if (GetDiskFreeSpaceEx(_T("D:"),(PULARGE_INTEGER)&a1,(PULARGE_INTEGER)&a2,(PULARGE_INTEGER)&a3) != 0)
 {
  double d1,d2,d3;
  d1 = (double)a1.QuadPart / 1024 / 1024 / 1024;
  d2 = (double)a2.QuadPart / 1024 / 1024 / 1024;
  d3 = (double)a3.QuadPart / 1024 / 1024 / 1024;
  msgStr.Format("盤符:D:/n當前用戶剩餘容量:%.3fGB/n總的容量:%.3fGB/n剩餘容量:%.3fGB/n",d1,d2,d3);
  MessageBox(msgStr);
 }
 else
 {
  MessageBox("失敗");
 }

 

運行結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章