积极答复者
关于磁盘文件访问与修改

问题
答案
-
在Windows下也可以通过CreateFile,ReadFile,WriteFile和一个特殊的API DeviceIoControl进行,只不过输入的文件名不再是磁盘的文件名了,而是你的硬盘设备的IO映射位置,类似于\\.\PHYSICALDRIVE0这样的路径,你首先需要熟悉底层的Windows是如何控制IO的,需要参考MSDN,CreateFile的标准设备IO部分和DeviceIoControl部分.磁盘碎片整理就是用的这4个API.
0xBAADF00D- 已标记为答案 0度转身 2010年5月17日 11:20
全部回复
-
依我对文件系统的了解,如果要获取文件在磁盘中的物理位置的话,就需要了解一些文件系统方面的知识,比如BPB信息,要修改文件的物理位置也是如此。
文件系统利用簇来管理文件,文件在磁盘中的物理位置是按簇号来确定的,文件所在的目录项里记录着该文件的首簇号。以FAT XX 文件系统为例,FAT表中记录着所有簇号的占用情况,在得到首簇号之后就去FAT表中查找,在与文件首簇号对应的位置记录着下一簇的簇号。如果该文件只占一簇,则该位置被标志为末簇。
修改文件的物理位置,等于是要修改目录项信息和FAT表中的信息。
要实现以上的功能,就需要使用与文件、磁盘操作相关的函数。比如CreateFile、ReadFile、WriteFile、SetFilePointer和CloseHandle。这些是WIN32的函数,DOS下得用其他方法。
另外一点就是,读写磁盘信息的最小单位是扇区,文件分配的最小单位是簇。
一切都会随着时间的推移而逐渐明朗起来。 -
在Windows下也可以通过CreateFile,ReadFile,WriteFile和一个特殊的API DeviceIoControl进行,只不过输入的文件名不再是磁盘的文件名了,而是你的硬盘设备的IO映射位置,类似于\\.\PHYSICALDRIVE0这样的路径,你首先需要熟悉底层的Windows是如何控制IO的,需要参考MSDN,CreateFile的标准设备IO部分和DeviceIoControl部分.磁盘碎片整理就是用的这4个API.
0xBAADF00D- 已标记为答案 0度转身 2010年5月17日 11:20