C プログラミング言語を使用して HDD の任意のブロックに書き込むにはどうすればよいですか?
MBRの書き方について質問がありましたが、C の側面はあまりカバーされていませんでした。
filedescriptors は、その言葉が示すように、ファイル用であるため、この場合、それらを使用する方法はないと思います。C 標準ライブラリに含まれる低レベル I/Oも、ファイル記述子で実装されています。
より正確に言えば、
この質問は、ファイルよりも HDD ブロックの書き込みに関するものです (OS に依存しません)。
上記の質問に対する回答は、基本的に UNIX システムでdd (coreutils) を使用することを提案していました。これが、私が C での方法を求めている理由です。ブートローダー ( GRUB ) とブート セクター ウイルスは異なる手法を使用しているのではないでしょうか?
ファイル記述子内の実際のポインターを変更することは、正当な方法ではないと思います。
問題と制限:
心に留めておくべき特定の側面があることを知っています。
- 一部のオペレーティング システムでは、ボリュームへの直接アクセスが制限されています (Windows など)。
- 書き込みエラーや特定のブロックへの間違ったデータの書き込みは、ファイルシステムの破損 (HDD 上のデータの損失) につながる可能性があります。
- ウイルス対策ソフトウェアは、疑わしいコードとしてフラグを立てる可能性があります。
この質問は、より理論的なものです。