1. 程式人生 > >磁碟管理-將檔案系統Buffer中的資料強制重新整理,儲存到磁碟

磁碟管理-將檔案系統Buffer中的資料強制重新整理,儲存到磁碟

對於已在應用程式和儲存裝置之間的路徑上的任何點啟用寫入快取的系統,必須確保該系統及其電源的穩定性。附加到系統的裝置使用寫入快取時,該裝置的快取演算法用於確保電源的穩定性,以便資料在移入和移出快取時可執行快取和移動。如果您的系統或電源存在已知的穩定性問題,則不應該使用這些功能。

還應該小心移除諸如 USB 快閃記憶體驅動器、SD、MMC 或緊湊式快閃記憶體卡以及外部儲存驅動器的儲存裝置。使用“安全移除”選項時,您的資料在大多數情況下都會受到 Windows 的保護。但是,也有可能某些驅動程式或應用程式不符合 Windows 模型,在移除這類裝置時會出現資料丟失的情況。任何可能的時候,在從系統移除任何外部儲存裝置之前,最好使用“安全移除”小程式。

實現程式碼如下:

// 引數描述:strDevName表示硬碟碟符,例如:“C:”、“D:”...

BOOL CToolFunction::FlushFileBuffersToDisk(const CString &strDevName)
{
        BOOL bResult = FALSE;

        if(strDevName.IsEmpty())
        {
                return FALSE;
        }

        HANDLE hDevice = CreateFile(_T("////.//")+strDevName, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);   
        if((hDevice==INVALID_HANDLE_VALUE) || (hDevice==NULL))
        {  
                return FALSE;
        }  

        // 重新整理
        bResult = FlushFileBuffers(hDevice);

        CloseHandle(hDevice);

        return bResult;

}