寻找Windows系统文件簇号

  1. 句柄: 在windows中,句柄是和对象一一对应的32位无符号整数值。对象可以映射到唯一的句柄,句柄也可以映射到唯一的对象。
  2. 操作系统的64位地址常用LARGE_INTEGER结构体表示,低32位LowPart,高32位HighPart,取全部地址QuadPart

首先通过input()函数输入文件的位置

1. 寻找磁盘句柄

HANDLE GetDiskHandle(char iDiskNo)函数中,iDiskNo是磁盘号,通过m_hDevice = CreateFileA(...)返回磁盘句柄。

2. 通过磁盘的句柄,读取扇区512字节数据返回

ReadSectorData函数中,将读取内容保存在lpOutBuffer中,即全局变量OutBuffer

3. 计算MFT起始簇号

利用计算地址函数change(start, num),可以由缓冲区里某个字节的起始位置和这个字节后面有几个字节来计算簇号。

4. 建立循环,一层层找文件
  • 通过SetFileName,计算返回FileName中有效字符个数
  • FindFileMftNo,寻找文件的MFT序号。
    首先调用FindFileName,从读到的簇的文件记录里找到文件名的起始地址,如果找不到,则到index的datarun里面找。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容