c - 在 C 中获取 Fat12 磁盘的卷标

标签 c fat diskimage

我有一个奇怪的时间试图在 C 中获取磁盘镜像的卷标。我知道对于 FAT12 磁盘,这条信息位于偏移量 0x2b 或十进制的 43 处,长度为 11 个字节。无论如何,现在这是我的代码:

void main(int argc, char *argv[]) {
    ...
    FILE *fp = fopen(argv[1], "rb");
    printf("Volume Label: %s\n", seekData(fp, 43, 11));
    ...
}

unsigned char* seekData(FILE *fp, int offset, int bytes) {
    unsigned char* buff = malloc(sizeof(unsigned char)*bytes);
    fseek(fp, offset, SEEK_SET);
    fread(buff, 1, bytes, fp);
    rewind(fp);
    return buff;
}

对于我使用的任何输入文件 (.IMA),我都会以十六进制返回 20 20 20 20 20 20 20 20 20 20 20。或者只是 Volume Label:(nothing here) 当上面的代码运行时。我在这里错过了一些非常明显的东西吗?任何帮助将不胜感激

最佳答案

所以我找到了问题所在。卷标似乎不再存储在前面提到的位置,通常作为特殊文件位于根目录中。

来源:http://www.ntfs.com/fat-partition-sector.htm

“Volume Label。此字段用于存储卷标,但卷标现在作为特殊文件存储在根目录中。”

关于c - 在 C 中获取 Fat12 磁盘的卷标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40699688/

相关文章:

c - 程序不会打印矩阵

c - 如何避免大量写入损坏SD卡?

filesystems - 如何遍历FAT目录、文件

macos - 操作系统/DiskUtil : Create auto-resizing encrypted Disc Image

c - Windows 7中的Geany IDE-执行C程序时出错

c - 在结构数组中搜索名称时出现段错误

c - 在 2ch PCM 上添加 440HZ 音调(合并 PCM、噪声叠加)

.net - Windows 文件系统中是否有为每个文件预先计算的哈希值?

linux - dd分区镜像不同

ios - 开发者目录中没有 9.1 的 DeviceSupport