Mac分析自由扇区磁盘
我需要读取硬盘扇区。具体来说,我试图写一个函数如下:Mac分析自由扇区磁盘
findFreeBlocks - 分析磁盘结构,找到一个给定长度的两个不间断 空闲块。
INT findFreeBlocks(字符* drivePath,DWORD sectorsNeeded,u_int64_t * freeSector1,u_int64_t * freeSector2)
参数:[IN] drivePath - sectorsNeeded路径的逻辑驱动器[IN] - 需要空闲块的长度在扇区(扇区= 512个 字节)[OUT] freeSector1 - 的第1扇区第发现自由 块[OUT] freeSector2 - 的第二的第一个扇区发现自由 块
返回值:0 - 如果成功,错误代码 - 如果错误
有人能指点我的API吗?我有Objective-c的经验,但C/C++也可以工作(我猜测这会是因为这是非常低的水平)。谢谢
正如@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”书籍的人说出了关于苹果开发文化的双关语(punishment)。钱令状)
长话短说:如果你想搞乱文件系统,你将被困在块设备上使用原始IO,在/dev/rdisk*
。没有图书馆。这几乎肯定不值得你花时间去用Linux做一些很酷的事情。 :)
你需要什么这个,你试图解决什么是真正的问题?我非常肯定,几乎没有任何操作系统会为您提供搜索空闲扇区的任何API,因为这取决于所使用的文件系统,通常程序应该使用文件,而不是光盘上的原始字节。根据所使用的文件系统,存在的空闲扇区的假设可能甚至是错误的。 – PlasmaHH