我想知道硬盘访问是如何工作的。例如,我如何查看/修改扇区?如果有帮助,我会针对Windows。 感谢
答案 0 :(得分:5)
This page似乎有关于此主题的一些相关信息:
您可以打开物理或逻辑 使用CreateFile()驱动 应用程序接口 (API)提供了这些设备名称 您有适当的访问权限 驱动器的权利(也就是说,你必须 是管理员)。你必须使用 两个CreateFile()FILE_SHARE_READ 和FILE_SHARE_WRITE标志获得 访问驱动器。
逻辑或物理驱动器具有 打开后,你就可以表演了 直接对整个数据进行I / O操作 驾驶。执行直接磁盘时 I / O,你必须寻找,阅读和写入 多个扇区大小的 设备和部门边界。呼叫 DeviceIoControl()使用 得到IOCTL_DISK_GET_DRIVE_GEOMETRY 每个扇区的字节数 各个部门,每个部门的部门等等 第四,这样你就可以计算出来了 你需要的缓冲区大小。
documentation of CreateFile也提供了一些线索:
您可以使用CreateFile功能打开物理磁盘驱动器或卷, 它返回一个可以的直接访问存储设备(DASD)句柄 与DeviceIoControl函数一起使用。这使您可以访问 磁盘或卷直接,例如像分区这样的磁盘元数据 表。但是,这种类型的访问还会暴露磁盘驱动器或 卷到潜在的数据丢失,因为写入磁盘不正确 使用这种机制可能使其内容无法访问 操作系统。为确保数据完整性,请务必成为 熟悉DeviceIoControl以及其他API的行为方式 不同于直接访问句柄而不是文件系统句柄。
答案 1 :(得分:1)
您可以使用win32的CreateFile()函数打开逻辑卷(例如c:驱动器)或物理驱动器。使用返回的句柄,您可以根据需要读取和写入扇区。 MSDN上的这个页面可以帮助您入门:CreateFile Function
我对造成的损坏不承担任何责任: - )
答案 2 :(得分:0)
STXXL可能对您感兴趣: http://stxxl.sourceforge.net/