0

ハードディスクをフォーマットするプログラムを作成しようとしていますが、検索して見つけたフォーマットのコードに行き詰まっていますが、SHFormatDrive()機能がwin xp以降でサポートされていることがわかり、使用する場所が見つかりませんでしたそれは助けになります!

4

2 に答える 2

9

UNIX でこのようなことを行う一般的な方法は、ライブラリ呼び出し system(const char*) を使用して、コマンド ライン ユーティリティを呼び出して実行することです。

もちろん、適切な権限などが必要です。

もう 1 つの方法は、もちろん、オープン ソースのフォーマット コード (mkfs.ext3 など) を見つけてプロジェクトに追加することです (もちろん、ライセンス要件に従います)。

于 2012-09-09T17:27:32.193 に答える
4

ハード ドライブのファイル システムを破壊する (アンフォーマットする) だけの場合は、単にハード ドライブ デバイス ファイルを書き込み用に開き、ゼロの書き込みを開始できます。

#include <stdio.h>
int main() {
    char buf[8192];
    FILE *f = fopen("/dev/sda", "w");
    if(f == NULL) {
       perror("Could not open file for writing");
       return;
    }

    long unsigned int written = 0;

    while(true) {
        unsigned count = fwrite(buf, sizeof(buf), 1, f);
        written += count;
        if(count != sizeof(buf) {
            perror("Could not write file");
            break;
        }; 
    }

    fclose(f);

    printf("Bytes written: %lu\n", written);
}

注: ルート ファイル システム/コンピューターが使用できなくなる可能性があるため、何をしているのか本当にわかっている場合にのみ、このコードを変更されていないバージョンで使用してください。

ext4 や btrfs などのファイル システムで実際にフォーマットしたい場合は、それらのファイル システム固有のライブラリを確認する必要があります。mkfs.btrfs または mkfs.ext4 ユーティリティのソース コードを読むことから始めるのが最善ですが、その作業は確かに簡単ではありません。

于 2012-09-09T20:10:35.780 に答える