1. 程式人生 > >Windows API一日一練 62 GetDiskFreeSpaceEx函式

Windows API一日一練 62 GetDiskFreeSpaceEx函式

有一次客戶給我打來了投訴電話,說我的軟體太不好用了,導致他們丟失了很多資料。後來我仔細地檢視 LOG ,分析出來的原因,其實是很簡單的,就是磁碟的空間不夠了。我給客戶說他們的電腦磁碟空間不夠了導致出錯的問題,但客戶反問我為什麼不提示磁碟空間不足。是啊,為什麼不提示磁碟的空間不足呢?為了解決這個需求,就需要使用到這個函式 GetDiskFreeSpaceEx   函式 GetDiskFreeSpaceEx 宣告如下:   WINBASEAPI BOOL WINAPI
GetDiskFreeSpaceExA(     __in_opt LPCSTR lpDirectoryName,     __out_opt PULARGE_INTEGER lpFreeBytesAvailableToCaller,     __out_opt PULARGE_INTEGER lpTotalNumberOfBytes,     __out_opt PULARGE_INTEGER lpTotalNumberOfFreeBytes
    ); WINBASEAPI BOOL WINAPI GetDiskFreeSpaceExW(     __in_opt LPCWSTR lpDirectoryName,     __out_opt PULARGE_INTEGER lpFreeBytesAvailableToCaller,     __out_opt PULARGE_INTEGER lpTotalNumberOfBytes,
    __out_opt PULARGE_INTEGER lpTotalNumberOfFreeBytes     ); #ifdef UNICODE #define GetDiskFreeSpaceEx GetDiskFreeSpaceExW #else #define GetDiskFreeSpaceEx GetDiskFreeSpaceExA #endif // !UNICODE   lpDirectoryName 是驅動器的名稱。 lpFreeBytesAvailableToCaller 是使用者可用的磁碟空間。 lpTotalNumberOfBytes 是磁碟總共的空間。 lpTotalNumberOfFreeBytes 是磁碟空閒的空間。以上都是位元組為單位。   呼叫函式的例子如下: #001  // 獲取磁碟剩餘空間。 #002  // 蔡軍生  2007/11/01 QQ:9073204 深圳 #003  void DiskFree(void) #004  { #005         // #006         ULARGE_INTEGER nFreeBytesAvailable; #007         ULARGE_INTEGER nTotalNumberOfBytes; #008         ULARGE_INTEGER nTotalNumberOfFreeBytes; #009         // #010         if (GetDiskFreeSpaceEx(_T("C:"), #011               &nFreeBytesAvailable, #012               &nTotalNumberOfBytes, #013               &nTotalNumberOfFreeBytes)) #014         { #015               TCHAR chBuf[256]; #016               wsprintf(chBuf,_T("Av=%I64d,Total=%I64d,Free=%I64d/r/n"), #017                    nFreeBytesAvailable, #018                    nTotalNumberOfBytes, #019                    nTotalNumberOfFreeBytes); #020               OutputDebugString(chBuf); #021         } #022  }  

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!希望你也加入到我們人工智慧的隊伍中來!http://www.captainbed.net