2011-08-17 103 views
0

網絡連接「失敗時」正在通過網絡共享寫入的文件會發生什麼情況?我想象多種事情都可能發生。WriteFile失敗模式

我問的原因是因爲我寫的一個程序似乎以一種我從未見過的方式破壞文件。實際上,我從來沒有收到過我的程序創建一個損壞的文件的報告,我有信心如果它損壞了我會聽到的一個文件。實際生成損壞文件的代碼實際上是Microsoft代碼。從MSXML4.0 COM組件在IXMLDOMDocument2接口上調用save函數時創建該文件。該函數創建了一個無效的XML文檔。 33789字節文件的最後5452個字節填充了NULL(0x00)。我試圖理解發生了什麼。

+1

寫入文件時網絡連接失敗。這還不夠嗎? –

+0

@Hans,你在說什麼?你是否說網絡連接失敗時寫入操作的行爲是未定義的?通常,網絡堆棧和/或網絡服務具有某種容錯性。 – Mike

+0

看起來像你的不。拿這到serverfault.com找出來,不要忘記仔細描述它。 –

回答

2

簡短的回答是,文件可能會損壞(如你已經找到)。

從那裏,幾乎唯一有趣的問題是你如何防止再次發生。典型的方法是將數據寫入臨時文件,寫入後將其重命名爲正確的名稱。如果網絡連接中途死亡,您將無法獲得正確的文件名。要恢復,請刪除所有臨時文件,然後從頭重新開始操作。

+0

謝謝你的回答。我還發現下面的頁面很有幫助。 http://blogs.msdn.com/b/adioltean/archive/2005/12/28/507866.aspx – Mike