我想知道硬盘访问是如何工作的。例如,如何查看/修改扇区?我的目标是Windows,如果有帮助的话。谢谢
发布于 2010-04-24 14:16:39
This page似乎有一些关于这个主题的相关信息:
如果您对物理或逻辑驱动器具有适当的访问权限(即,您必须是管理员),则可以使用CreateFile()应用程序编程接口打开具有这些设备名称的物理或逻辑驱动器。必须同时使用CreateFile() FILE_SHARE_READ和FILE_SHARE_WRITE标志才能访问驱动器。
打开逻辑或物理磁盘后,您可以直接对整个驱动器上的数据执行I/O操作。在执行直接磁盘I/O时,必须在设备的扇区大小的倍数和扇区边界上查找、读取和写入。使用IOCTL_DISK_GET_DRIVE_GEOMETRY调用DeviceIoControl()来获取每个扇区的字节数、扇区数、每个磁道的扇区数等等,这样就可以计算出所需的缓冲区大小。
documentation of CreateFile还提供了一些线索:
可以使用CreateFile函数打开物理磁盘驱动器或卷,这将返回可与DeviceIoControl函数一起使用的直接访问存储设备(
)句柄。这使您可以直接访问磁盘或卷,例如像分区表这样的磁盘元数据。但是,这种类型的访问也会使磁盘驱动器或卷面临潜在的数据丢失风险,因为使用此机制对磁盘进行不正确的写入可能会使操作系统无法访问其内容。为确保数据完整性,请务必熟悉DeviceIoControl以及其他API在使用直接访问句柄时与使用文件系统句柄时有何不同。
发布于 2010-04-24 10:15:32
您可以使用win32的CreateFile()函数打开逻辑卷(例如c:驱动器)或物理驱动器。使用返回的句柄,您可以根据需要读取和写入扇区。MSDN上的这个页面应该可以让你上手:CreateFile Function
我对造成的损坏不承担任何责任:-)
https://stackoverflow.com/questions/2702853
复制相似问题