チェックディスクの原因になるDirty Bitはどこにあるか
【このドライブで問題が見つかりました。今すぐドライブをスキャンして修復してください。】や【このデバイスまたはディスク上のいくつかのファイルに問題がある可能性があります】の原因であるFAT16/32に関しては、チェックディスクの必要があるとマークしているDirty Bit と呼ばれるものは、BOOTセクタの固定の位置にあるらしい。
ところが、NTFSの場合は、 NTFS マスターテーブルのボリューム テーブル内にあるらしくて、ディスクをダンプしても特定が難しい様だ。
しかも、このテーブル、内部でバックアップされているので2か所に保存されているようだ。
Dirty Bitの変更ツールを作ってみた。
NTFSの場合はデータが破壊される可能性があるので、 /fオプションを付けて実行。
書き換えたテーブルの位置はアプリが表示するので、もし書き換えてデータが壊れた場合は手動で復元してください。 ・ω・
C:\> DTClear.exe J: /f /c
/s でフラグON
/c でフラグOFF
NTFSのダーティーテーブルのフォーマットなのだけど
0x0080 が有効と書かれているサイトがあったけど、手元のUSBだと 0x0080 が無効で 0x0181が有効だった。
こっちのサイトだと
0x0101(Win8)と0x0181(Win7)が有効、0x0001(Win8)と0x0000(Win7)が無効とか言ってて謎
ntfs-3gのntfsprogs/ntfswipe.cなどのmainから読めば、ボリュームのダーティービットが立ってると普通は続行できないように早々にガードされてるので読みやすいかも。