0

我正在尝试制作一个格式化硬盘的程序,现在我被我搜索并找到的格式化代码所困扰,SHFormatDrive()但我发现win xp及更高版本支持该功能,我无法找到使用它有什么帮助!

4

2 回答 2

9

在 UNIX 中执行此类操作的典型方法是使用库调用系统 (const char*) 调用命令行实用程序来为您执行此操作。

当然,您需要适当的权限等。

当然,另一种方法是找到开源格式代码(例如 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 回答