- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图通过读取磁盘镜像的十六进制值来计算 FAT12 软盘文件系统上还有多少剩余可用空间。我的计划是计算值为 0x000(空白空间)的 FAT 条目的数量。我不明白如何将 FAT 条目转换为可读格式。
我的代码:
#include<stdio.h>
#include<stdlib.h>
int freeSpace(FILE *fp){
int fat_entry;
fseek(fp, 512L, SEEK_SET); //start of first FAT
fread(&fat_entry,1,3,fp);
printf("THREE BYTES: %X \n", fat_entry);
//Finish calculating free space
return 0;
}
int main(int argc, char** argv)
{
FILE *fp;
int free_space;
if ((fp=fopen(argv[1],"rb")))
{
printf("Successfully opened the image file.\n");
free_space = freeSpace(fp)
printf("Free Space: %d\n", free_space);
}
else
printf("Fail to open the image file.\n");
fclose(fp);
return 0;
}
在我的十六进制编辑器中查看从字节偏移量 512 字节开始的前三个字节是:FO FF FF
printf("THREE BYTES: %X\n", fat_entry);
的输出是:FFFFF0
根据我读过的FAT规范,我的理解是,如果我有3个字节uv wx yz,则相应的12位FAT12条目将是xuv yzw。所以我想将 FFFFF0 转换为 FF0 FFF 形式,这样我就可以检查任一条目是否为 0x000。
我对如何读取正确的 FAT12 值感到非常困惑。我知道这与小字节序和一些技巧有关,因为我同时加载 2 个 FAT12 值以获得偶数个字节,但我不知道从这里到哪里去。
最佳答案
以下函数获取下一个簇。该函数来 self 的存档。
word nextclust12 (cluster, BPB)
struct BPB *BPB; // BIOS parameter block
word cluster; // curent cluster: get next one
{
word *FAT, index, bytenum, j;
dword bloknum;
bytenum= cluster + cluster/2; /* multiply with 1.5 */
bloknum= bytenum / (3*512); /* in which 3-group is block */
index= bytenum % (3*512); /* position in 3-group */
/* read part of FAT */
if (!dosread (FAT_buf, BPB->disk, bloknum + BPB->reserved_bloks, 3))
return (BADBLOK12);
FAT= (word *) &FAT_buf[index]; /* get a word from that place */
if (even (cluster))
return ( *FAT & 0x0fff); /* set high 4 bits to zero */
else
return ( *FAT >> 4); /* shift FAT-entry to right */
}
代码不完整(需要大量头文件和其他 C 文件),因此将其视为伪代码。
关于c - 从 FAT12 查找可用软盘空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33976603/
我正在用 C 实现 FAT 文件系统。我遵循 microsoft 发布的规范 ( http://read.pudn.com/downloads77/ebook/294884/FAT32%20Spec%
我正在尝试从具有 armv6 和 armv7 架构的库中删除重复对象,即, $ lipo -info libx.a Architectures in the fat file: libx.a are:
我正在学习 FAT 文件系统以及如何计算 FAT 大小。现在,我有这个问题: 假设磁盘大小为 32 MB,块大小为 1 KB。计算FAT16的大小。 现在,我知道要计算它,我们将每个条目的位数乘以块数
我正在使用 Chan's FAT library这似乎提供了一个标准的 FAT 文件系统 API。 API 似乎没有直接提供列出给定目录中的所有文件。 列出可以访问标准 FAT API 的目录中所有文
我有一个数据库实现,每条记录一个文件,我有大约 10000 条记录。我正在尝试优化访问文件的性能,但我有点怀疑。 将文件拆分到文件夹中是否比将所有文件保存在单个文件夹中更好,以便快速访问文件?例如:文
我需要用 C 创建我自己的文件系统实现。我正计划创建一个类似于 FAT 系统的系统。我们得到一个大小为 10MB 的文件,它充当我们自己的“磁盘”。我知道 FAT 表存储簇号,根目录存储我们创建的每个
我正在尝试使用自定义引导加载程序开发一个小型操作系统。我在 OSDEV 方面有一点经验,但没有那么多......我的问题是第一阶段引导加载程序没有从磁盘加载秒数。这是 boot.asm 文件: org
最近在处理我的代码时,我注意到一些内存使用量显着增加,我在我的代码中看不到很多原因。所以我想知道是否有任何程序、技术或其他类型的工具可以扫描我的代码(Delphi)并为我估计哪些过程、函数和函数将是最
我知道这个问题已经被提出过多次,但我的目标与我在网上搜索到的内容略有不同。具体来说,我已经能够为 iPhone 构建静态库,但我能够构建的最终 fat 文件仅包含 arm 和 i386 架构(并且我不
我已经在几个上下文中阅读过“胖指针”这个术语,但我不确定它的确切含义以及它何时在 Rust 中使用。指针似乎是普通指针的两倍,但我不明白为什么。它似乎也与特征对象有关。 最佳答案 术语“胖指针”用于指
因此,我正在翻译示例代码,该示例代码说明如何使用Gradle从GroovyDSL到KotlinDSL创建胖子(我正在使用Gradle 5.3.1)。 我得到了GroovyDSL代码here: jar
我的 CPU 是小端字节序,文档告诉我它符合 FAT 规范的字节顺序。那么为什么我得到了 BS_jmpBoot 的有效地址(第一个扇区的字节 0-3),却没有得到 BPB_BytesPerSec 的有
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 6 年前。 Improve
我正在寻找一种方法来纯粹外部化 Spring boot 应用程序中的一些配置设置。例如:当双击 fat-JAR 文件时,它会从中加载配置,例如 myConfig.config,该文件与 fat-JAR
当涉及到使用 FAT 的文件系统时,这里出现了一个关于随机访问的直截了当的问题。 我看到了不同种类的图片/动画对 FAT 的不同解释,展示了不同的东西。我不明白如何在不通过文件一次的情况下进行随机访问
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 6 年前。 Improve
我正在编写一个嵌入式系统,其中我正在创建一个 USB 大容量存储设备驱动程序,该驱动程序使用 8MB RAM block 作为 FAT 文件系统。 尽管当时允许操作系统将我的 RAM 区域清零并格式化
这个问题在这里已经有了答案: ECMAScript 6 arrow function that returns an object (6 个答案) 关闭 5 年前。 是否可以将下面的代码写在一行中(
我正在尝试使用这些说明在 Windows 上安装无脂 crm http://guides.fatfreecrm.com/Setup-Microsoft-Windows.html 我正在安装mysql2
我已经在多个上下文中读到术语“胖指针”,但我不确定它的确切含义以及它在 Rust 中的使用时间。指针好像是普通指针的两倍大,但我不明白为什么。它似乎也与特征对象有关。 最佳答案 术语“胖指针”用于指代
我是一名优秀的程序员,十分优秀!