元のファイルとディスクに書き込まれたファイルとのある種の比較だと思いますが、実際に低レベルでどのように行われるかを知っている人はいますか?
つまり、ソースコンテンツと宛先コンテンツのハッシュを作成してから比較しますか?もしそうなら、それは書き込まれたコンテンツのハッシュをRAMに保存しますか?それとも、ハードドライブの一時ファイルに保存しますか?何が起こっているのかというログファイルはありますか?
この機能がどのように機能するかを正確に知りたいだけです:)そして私はWindowsImageBurnerについて言及しています。
IBurnVerification
インターフェイスおよび IMAPI_BURN_VERIFICATION_LEVEL
列挙型については、WindowsAPIのこれらのMSDNページを確認してください。
データディスクの場合、クイックモードでは、ディスク全体をチェックサムするのではなく、セクターの選択だけをチェックサムするように見えます。次に、API呼び出しREAD_DISC_INFO
およびREAD_TRACK_INFO
が新しいディスクに対して成功することを確認します。
完全な検証のために、上記のチェックを実行してから、書き込み中のメモリストリームで計算されたチェックサムに対して、新しいディスクの最後のセッションで完全なチェックサムを実行します。チェックサムはRAMに保存する必要がありますが、短期間の値である可能性があります。比較は、ソースメディア自体ではなく、RAM内のディスクイメージに対して行われるため、ソースデータが正しく読み取られなかった場合、誤って書き込まれることに注意してください。検証ではこれは検出されません。
音楽ディスクの場合、READ_TRACK_INFO
とディスクの目次のチェックに重点を置いていますが、チェックサムの計算は実行しません。音楽の完全な検証モードはありません。
フランクは、Windows固有の検証についてうまく説明しました。もっと一般的な答えをあげましょう。
データを検証するために、書き込み後のディスクの検証は実際に何をしますか?
つまり、ソースコンテンツと宛先コンテンツのハッシュを作成し、それらを比較しますか?もしそうなら、それは書き込まれたコンテンツのハッシュをRAMに保存しますか?それとも、ハードドライブの一時ファイルに保存しますか?何が起こっているのかというログファイルはありますか?
これは確かに比較を実装できる1つの方法です。1つのファイルをハッシュし(できれば十分に大きい-衝突アルゴリズムの可能性が低いことを読み取ります)、他のファイルについて繰り返し、ハッシュを比較します。それが検証の実装方法である場合は、ドライブLEDフラッシュがしばらく表示され、次にCD/DVDLEDフラッシュがしばらく表示されます。
検証を実装する別の方法は、1つのファイルのブロックを読み取り、次に他のファイルから同じブロックを読み取り、それらを比較して、ファイルの終わりに達するまで繰り返すことです。この場合、2つのドライブのLEDが前後に交互に表示されます。
もちろん、ハードドライブと光学ドライブにLEDがない場合、それはそれほど明白ではありませんが、1つからの一連の読み取りをログに記録するため、ProcessMonitorのようなものでそれを見ることができます。その他は、それぞれ単一の大きなバースト、または交互の小さなバーストのいずれかです。
元のファイルとディスクに書き込まれたファイルとのある種の比較だと思いますが、実際に低レベルでどのように行われるかを知っている人はいますか?
実際には、ドライブキャッシュをフラッシュして、比較機能がメモリキャッシュからではなく実際のディスクからデータを読み取るようにするだけです。明らかに、これは重要なステップです。検証がキャッシュから行われる場合、実際にディスク上にあるものを表していないため、破損が簡単にすり抜けてしまう可能性があるためです。
比較がドライブから行われたのか、RAM)のキャッシュから行われたのかは、発生速度によって確認できます。単純な比較を手動で行う場合(たとえば、WinDiffまたはWinMergeを使用するか、それらをハッシュすることによって)ハッシュツールを使用すると、メモリキャッシュからファイルを読み取るため、比較が予想よりもはるかに高速に行われることがわかります。キャッシュをフラッシュして、実際のディスクから強制的に読み取る必要があります。光ドライブ(およびその他のリムーバブルメディアの場合)フラッシュドライブやメモリカードのように、ドライブを取り出すだけでキャッシュをフラッシュできますが、ハードドライブの場合はそれほど単純ではありません(ただし、新しいコピーが必要なため、通常は問題ありません)。テスト)。