David Heffernanの助けのおかげで、私は Freepascal で書かれたプログラムを持っています (しかし、私の質問に対する Delphi ソリューションで十分です)。物理ディスクをセクターごとに読み取ります。これは、ディスク ハンドルに Windows API の CreateFileW 関数を使用し、次にFileFile、FileSeekなどを使用してナビゲートおよび読み取りを行います。すべてのセクターに問題がなければ、正常に動作します。ただし、ディスクに不良セクタがある場合は、別の方法で処理する必要があります。
私の質問は、これらのセクターの読み取り中に、それらが不良セクターであるかどうかを判断するために使用できる手順またはライブラリがあるかどうかです。そうでない場合は、どうすればよいですか?どのセクターが不良で、どのセクターがそうでないかを知っているのはディスクコントローラーだと思うので、プログラムが実際に不良セクターにアクセスできるとは思わないので、どの不良セクターを検出してそれに応じて行動するにはどうすればよいですか? SMART をクエリする必要がありますか? もしそうなら、どのように?
私はこのサイトを検索し(コードではなくプログラムに関連するこのC投稿のみを見つけました)、Googleで調べましたが、明らかな解決策はありませんでした。