Windows API一日一練 62 GetDiskFreeSpaceEx函式
阿新 • • 發佈:2018-12-15
有一次客戶給我打來了投訴電話,說我的軟體太不好用了,導致他們丟失了很多資料。後來我仔細地檢視
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