-1

所以我尝试制作一个可以引导的小程序,让用户删除文件并将文件添加到指定的驱动器。唯一的问题是我不确定如何使用程序集访问驱动器。有人可以指出我可以在哪里找到这些信息的方向吗?该信息也可能用于 c 编程语言。

我会尝试从某些可引导的汇编代码类型访问默认的 Windows 7 硬盘驱动器。哪个是 NTFS。

4

1 回答 1

9

要在 x86 PC 上以一些可引导代码访问磁盘,最简单、最自然的方法是使用BIOS int 13h 函数。这将让您读取和写入单个磁盘扇区。

硬盘驱动器通常被分成多个分区,还有一个主引导记录( MBR),它描述了每个分区的位置、大小和类型。MBR 是 HDD 的第一个扇区。

每个分区内都有一些文件系统。您需要实现 NTFS 驱动程序才能在 NTFS 中读取和写入文件。

AFAIK,NTFS未开放,但存在基于逆向工程的 NTFS 驱动程序(例如在 Linux 中)。NTFS 驱动程序通常是用 C(++) 编写的,而不是汇编,因为 NTFS 庞大而复杂,而且 C 在开发、维护和可移植性方面比汇编更实用。我不建议在汇编中编写 FS 代码。

PS 在EFI系统上的情况有些不同。有GPT而不是 MBR,并且您使用 EFI 工具而不是 BIOS int 13h 来访问磁盘。

PPS 我已经在 C 中完成了您想要的操作,并进行了一些汇编,但使用的是 FAT1x/32 而不是 NTFS。这是可行的。NTFS 更难。对于一个人来说,这可能是不可能的,特别是如果他们没有足够的知识和技能。

于 2012-02-21T06:30:28.333 回答