【问题标题】:Mac analyzing disk for free sectorsMac 分析磁盘的空闲扇区
【发布时间】:2011-12-05 23:01:47
【问题描述】:

我需要读取硬盘扇区。具体来说,我正在尝试编写如下函数:

findFreeBlocks - 分析磁盘结构并找到两个不间断的 给定长度的空闲块。

int findFreeBlocks(char * drivePath, DWORD 需要的扇区, u_int64_t *freeSector1, u_int64_t *freeSector2)

参数:[IN] drivePath – 逻辑驱动器的路径 [IN] 扇区需要 - 扇区中所需空闲块的长度(扇区 = 512 bytes) [OUT] freeSector1 – 第一个找到的空闲扇区的第一个扇区 block [OUT] freeSector2 – 第二个找到空闲的第一个扇区 阻止

返回:0 - 如果成功,错误代码 - 如果错误

有人可以指点我的 API 来帮助我做到这一点吗?我有使用 Objective-c 的经验,但 C/C++ 也可以工作(我猜它会是这样,因为这是非常低的级别)。谢谢

【问题讨论】:

  • 你需要这个做什么,你想要解决的真正问题是什么?我很确定几乎没有操作系统会为您提供任何用于搜索空闲扇区的 API,因为这取决于所使用的文件系统,并且通常程序应该使用文件,而不是磁盘上的原始字节。根据所使用的文件系统,存在空闲扇区的假设甚至可能是错误的。

标签: objective-c c macos cocoa hard-drive


【解决方案1】:

正如@PlasmaHH 所指出的,像 MacOS 这样的操作系统不会为您提供 Objective C 或 C++ API 来处理物理磁盘上的扇区和磁道。 (它也不会让您改变驱动器内部的电机速度,或将驱动器头移动到板的中心或外部。)

如果您想编写“低级”代码,例如碎片整理程序或类似的,您必须知道您正在处理的文件系统。 Mac 的默认 HFS+ 没有很多开源工具可以使用它。结构上有一些注释:

http://developer.apple.com/library/mac/#technotes/tn/tn1150.html

...一个名为hfsdebug 的工具已经存在,它已被fileXray 弃用:

http://osxbook.com/software/hfsdebug/

(不过,没有源代码。声称自己是教育工作者的人却在他的“Mac OS/X Internals”一书中附带了一个闭源工具,这充分说明了 [双关语] 的文化Apple 开发。郁闷的是,我真的可以写一本名为“Mac OS/X Internals Internals”的书赚钱。)

长话短说:如果您想弄乱文件系统,您将不得不在/dev/rdisk* 的块设备上使用原始 IO。没有图书馆。这几乎肯定不值得你花时间,而是用 Linux 做一些很酷的事情。 :)

【讨论】:

    猜你喜欢
    • 2019-12-05
    • 2012-11-27
    • 2010-12-17
    • 2023-03-23
    • 2013-02-04
    • 2013-10-05
    • 2012-09-02
    • 2021-07-12
    • 2022-01-23
    相关资源
    最近更新 更多