微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从给定 LCN逻辑簇号的卷开头获取物理偏移量?

如何解决如何从给定 LCN逻辑簇号的卷开头获取物理偏移量?

LCN 的本质是什么?

根据documentation

逻辑簇号 (LCN) 描述了簇距 体积内的某个任意点。 LCN 应仅被视为 序数或相对数。没有保证的映射 逻辑集群到物理硬盘驱动器扇区。

然而,我不清楚 arbitrary point 的含义。如何获得这个arbitrary pointLCN一个“相对数字”,但问题是卷的哪一部分实际上与这个数字相关?换句话说,如何发现 LCN #0 的物理偏移量(从卷的开始以字节为单位的偏移量)是多少?

我最初的猜测是 LCN 是从卷开始的集群中的偏移量,即 LCN #0 是卷中的第一个物理集群。但是,根据文档(以及我的一些实验),它看起来不正确。那么真相在哪里?

看看让我问这个问题的例子。:

假设我有一个 32 GB 的卷,格式为 fat32,簇大小为 16384 字节,这里有一个 100Mb 的文件。使用 FSCTL_GET_RETRIEVAL_POINTERS 我可以获得此文件Extent(RETRIEVAL_POINTERS_BUFFER) 信息。就我而言,Lcn=1,NextVcn=6400。 根据这个输出,我假设我的文件位于卷的区域,从卷的开头偏移 Lcn * cluster_size 字节,大小为 NextVcn * cluster_size 字节。这是一个正确的假设吗?我不确定,因为根据the layout of FAT32,它在Reserver sectors之前包含FAT RegionRoot Directory RegionData Region,并且不能有文件数据在物理集群 #1 中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。