CでMBRを分析するプログラムを書きたいだけです。
Windows の API または Linux のコマンドを介してそれを読み取るいくつかの方法を知っています。
しかし、プラットフォームに依存する制限なしに C で実行できますか?
できない場合、何か理由はありますか?
いいえ、MBR の読み取りはプラットフォームに大きく依存します。複数のハードディスクがある場合、「その」MBR とは何かという質問も含まれます。期待できる最善の方法は、プラットフォームに依存するものをコードから隠すライブラリですが、おそらく自分で作成する必要があります。
通常、ディスクの内容全体へのファイル ハンドルを取得するには、プラットフォーム固有の手順に従う必要があります。その後、そのファイルを使用して MBR を操作することは、比較的プラットフォームにとらわれません。
Guntram が言及しているように、必要なハード ドライブを特定する必要があることに加えて、多くのプラットフォームでは、ディスクへの書き込みアクセスを取得する前に、そのドライブからすべてのファイル システムをアンマウントする必要があります。これにより、目標が妨げられることさえあります。
できない場合、何か理由はありますか?
POSIX には、マウントまたはブロック デバイス (Linux 固有) の概念がなく、ANSI C は言うまでもありません。