2012-03-12 75 views
3

我試圖想出一個回答a question of mine涉及恢復文件時,Windows的API抱怨「CRC錯誤」。我知道這是因爲一個壞塊。NTFS CRC窗口在什麼地方和哪裏抱怨?

但我的理論是:

  • 如果我禁用SMART,因此ECC,我應該能夠閱讀「原始數據」,不ECC應用,因此具有與「不確定數據」塊文件的流(而不是應用ECC的空白塊)。
  • 該數據不應與其NTFS的CRC匹配,而其他文件的數據應與它們匹配。
  • 我應該能夠通過用「不確定數據」逐塊翻轉位來強制整個文件的「正確數據」(我懷疑腐敗會影響壞塊中的一兩位,而不是整塊,因此它落在32位校驗和和蠻力的可恢復閾值內)。

現在,問題是,我不知道這個CRC是什麼,或者它在哪裏。我GOOGLE了很多,但我找不到它。我想這是一個NTFS功能,據我所知,NTFS沒有完整的官方文檔,我真的不喜歡在NTFS-3G的C++源代碼中尋找這個想法。

因此:我想製作一個小工具或腳本來恢復這種情況下的文件。一個答案告訴我在哪裏得到這個CRC和它使用什麼算法將被接受。

另外:我懷疑CRC是分配單位,而不是整個文件。也許它在MFT中?

+1

CRC錯誤由硬盤本身報告,而不是NTFS。 NTFS不維護CRC。 – 2012-03-12 08:43:21

+0

http://en.wikipedia.org/wiki/Cyclic_redundancy_check – 2012-03-12 08:45:01

+0

@RaymondChen如果是這樣的話,chkdsk將如何工作?如果分區不是NTFS或FAT格式,則它不起作用。 – 2012-03-13 04:24:43

回答

5

您看到的CRC錯誤不是來自NTFS。他們來自設備驅動程序。

+0

真的很傷心,真的,因爲我期望能以某種方式獲得這個CRC,但我確信無法通過正常方式將它從硬件中取出。另外,我只是會打擾你一點點:如果硬盤驅動器在多次讀取嘗試後返回數據(而不是返回錯誤),這是否意味着數據已成功讀取?因爲對於一些讀取數據的塊來說,似乎有一些技巧(因爲它是一個JPEG,我可以肯定它的工作),也許如果我將它設置爲無限期地讀取塊,直到它不報告錯誤可以做(我猜)。謝謝! – 2012-03-13 16:55:45

+0

如果硬盤驅動器報告數據已成功讀取,那麼報告就是這樣。你是否相信硬盤是你的決定。 – 2012-03-13 17:04:40

+0

順便說一句,我只是想評論我正在嘗試使用GNU'ddrescue'讀取數據,並且它在多次嘗試之後成功讀取了一些塊,並且這些文件都可以。我知道這只是一個軼事,但我認爲有人可能想嘗試。另外,我在這個驅動器上使用SpinRite的過程非常緩慢。我剛剛聽完一首已經損壞的完整歌曲,即使在經過一番人爲的嘗試之後,這首歌也不會被讀取。這是令人驚訝的,但它確實恢復了它(另外,我知道壞塊是中歌(不是元數據),歌曲的頻譜看起來很平滑 - 它恢復了它,我很驚訝)。 – 2012-03-15 07:05:24