有一次客戶給我打來了投訴電話,說我的軟體太不好用了,導緻他們丢失了很多資料。後來我仔細地檢視LOG,分析出來的原因,其實是很簡單的,就是磁盤的空間不夠了。我給客戶說他們的電腦磁盤空間不夠了導緻出錯的問題,但客戶反問我為什麼不提示磁盤空間不足。是啊,為什麼不提示磁盤的空間不足呢?為了解決這個需求,就需要使用到這個函數GetDiskFreeSpaceEx。
函數GetDiskFreeSpaceEx聲明如下:
<code>WINBASEAPI</code>
<code>BOOL</code>
<code>WINAPI</code>
<code>GetDiskFreeSpaceExA(</code>
<code> __in_opt LPCSTR lpDirectoryName,</code>
<code> __out_opt PULARGE_INTEGER lpFreeBytesAvailableToCaller,</code>
<code> __out_opt PULARGE_INTEGER lpTotalNumberOfBytes,</code>
<code> __out_opt PULARGE_INTEGER lpTotalNumberOfFreeBytes</code>
<code> );</code>
<code>GetDiskFreeSpaceExW(</code>
<code> __in_opt LPCWSTR lpDirectoryName,</code>
<code>#ifdef UNICODE</code>
<code>#define GetDiskFreeSpaceEx GetDiskFreeSpaceExW</code>
<code>#else</code>
<code>#define GetDiskFreeSpaceEx GetDiskFreeSpaceExA</code>
<code>#endif // !UNICODE</code>
lpDirectoryName是驅動器的名稱。
lpFreeBytesAvailableToCaller是使用者可用的磁盤空間。
lpTotalNumberOfBytes是磁盤總共的空間。
lpTotalNumberOfFreeBytes是磁盤空閑的空間。以上都是位元組為機關。
調用函數的例子如下:
<code>#001 //擷取磁盤剩餘空間。</code>
<code>#002 //蔡軍生 2007/11/01 QQ:9073204 深圳</code>
<code>#003 void DiskFree(void)</code>
<code>#004 {</code>
<code>#005 //</code>
<code>#006 ULARGE_INTEGER nFreeBytesAvailable;</code>
<code>#007 ULARGE_INTEGER nTotalNumberOfBytes;</code>
<code>#008 ULARGE_INTEGER nTotalNumberOfFreeBytes;</code>
<code>#009 //</code>
<code>#010 if (GetDiskFreeSpaceEx(_T("C:"),</code>
<code>#011 &nFreeBytesAvailable,</code>
<code>#012 &nTotalNumberOfBytes,</code>
<code>#013 &nTotalNumberOfFreeBytes))</code>
<code>#014 {</code>
<code>#015 TCHAR chBuf[256];</code>
<code>#016 wsprintf(chBuf,_T("Av=%I64d,Total=%I64d,Free=%I64drn"),</code>
<code>#017 nFreeBytesAvailable,</code>
<code>#018 nTotalNumberOfBytes,</code>
<code>#019 nTotalNumberOfFreeBytes);</code>
<code>#020 OutputDebugString(chBuf);</code>
<code>#021 }</code>
<code>#022 }</code>
<code></code>
<code>本文轉自 bilinyee部落格,原文連結: </code>http://blog.51cto.com/215363/955734 如需轉載請自行聯系原作者