私はHDDからGPTパーティションテーブルを削除するために、概念の証明としてプログラムを作成しようとしていました。C++でHDDからパーティションテーブルを削除
//Removes the first partition table in the beginning of the disk
::lseek(fd, 0, SEEK_SET);
::write(fd, '\0', GPT_PARTITION_TABLE_SIZE);
//Removes the backup partition in the end of the disk
::lseek(fd, -GPT_PARTITION_TABLE_SIZE, SEEK_END);
::write(fd, '\0', GPT_PARTITION_TABLE_SIZE);
それがうまく動作するように見えたとしても、私はこの方法が正しくないことを友人から単語を持って、私は地元を使用する必要があります。ディスクを開いた後、短いそれをカットするために、私は次のような何かを書き込み用のバッファで、私のコードは正しい方法ではないwrite()へのポインタとしてNULLを使用しようとします。
私は彼が何を意味しているか理解するのにかなりの時間を費やしていますが、私はまだそれが得られるかどうかはわかりません。 これまで誰かが似たようなことを試みたことがありますか?
あなたは、これが働きましたか?アドレス0から始まるランダムなメモリのパーティションサイズのチャンクを書いたようです。 – Neil
''\ 0''を使って、あなたは何を*書く予定ですか?ゼロを書くつもりですか?どれくらい? –
@Cooli 'write'の戻り値をチェックしませんでした。それは実際には失敗し、何も書かなかった。 – Ivan