我想知道硬盘访问是如何工作的,例如,我如何查看/修改扇区?如果可以的话,请针对Windows进行解答。 谢谢。
这个页面似乎包含一些相关信息:
您可以使用CreateFile()应用程序编程接口(API)打开物理或逻辑驱动器,只要您具有访问该驱动器的适当权限(即,您必须是管理员)。您必须同时使用CreateFile() FILE_SHARE_READ和FILE_SHARE_WRITE标志来访问驱动器。
一旦打开了逻辑或物理驱动器,您就可以对整个驱动器上的数据执行直接I/O。在执行直接磁盘I/O时,您必须按设备的扇区大小和扇区边界进行寻址、读取和写入。调用DeviceIoControl()使用IOCTL_DISK_GET_DRIVE_GEOMETRY获取每扇区字节数、扇区数、每磁道扇区数等信息,以便计算所需缓冲区的大小。
CreateFile的文档也提供了一些线索:
您可以使用CreateFile函数打开物理磁盘驱动器或卷,返回可与DeviceIoControl函数一起使用的直接访问存储设备(DASD)句柄。这使您可以直接访问磁盘或卷,例如分区表等磁盘元数据。但是,这种类型的访问也会使磁盘驱动器或卷暴露于潜在的数据丢失风险中,因为使用此机制对磁盘进行错误写入可能会使其内容对操作系统不可访问。为确保数据完整性,请确保熟悉DeviceIoControl以及其他API如何与直接访问句柄和文件系统句柄的行为不同。
您可以使用win32的CreateFile()函数打开逻辑卷(例如c:驱动器)或物理驱动器。通过返回的句柄,您可以根据需要读取和写入扇区。
MSDN上的此页面应该可以帮助您入门:CreateFile Function
我对造成的损坏不负责任 :-)