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