Windows NTFS在哪里存储文件属性

Windows NTFS在哪里存储文件属性,windows,filesystems,metadata,ntfs,file-attributes,Windows,Filesystems,Metadata,Ntfs,File Attributes,我目前正在开发一个文件系统,并对现有的文件系统进行一些研究,在文件系统中,我想在文件中添加额外的元数据(或文件属性),除了通常由FS存储的文件(如NTFS)之外,还为每个文件存储其文件名、类型、路径、大小、创建和修改日期,和专利权 特别是在NTFS中,我发现$MFT存储了每个文件的属性,比如$FILENAME中的文件名和$STANDARD_信息中的时间戳,但是它的其他属性,比如所有者、位置、大小和类型呢 我问这个问题是为了理解是否可以像我之前所说的那样,用额外的文件元数据来补充NTFS之类的FS

我目前正在开发一个文件系统,并对现有的文件系统进行一些研究,在文件系统中,我想在文件中添加额外的元数据(或文件属性),除了通常由FS存储的文件(如NTFS)之外,还为每个文件存储其文件名、类型、路径、大小、创建和修改日期,和专利权

特别是在NTFS中,我发现$MFT存储了每个文件的属性,比如$FILENAME中的文件名和$STANDARD_信息中的时间戳,但是它的其他属性,比如所有者、位置、大小和类型呢


我问这个问题是为了理解是否可以像我之前所说的那样,用额外的文件元数据来补充NTFS之类的FS,但我似乎无法理解它将已经拥有的元数据存储在哪里…

所有者可以通过$SECURITY\u DESCRIPTOR属性来确定。位置,我相信你指的是卷上的路径,只能通过解析目录来确定,直到你遇到那个特定的文件(构成文件系统B*树的INDX块存储对MFT中文件记录的引用)。文件大小可以通过$DATA属性准确确定

只能根据文件内容(某些文件格式具有标记)或文件名中包含的扩展名来确定文件类型。当涉及到文件类型时,文件系统是不可知的。如果您指的是文件、目录、链接等中的文件类型,则可以从文件记录本身确定这些类型

至于添加额外的元数据,添加NTFS驱动程序无法识别的额外属性是不明智的,因为您必须编写自己的专有驱动程序并分发它。没有该驱动程序的机器将看到该驱动器已损坏。您还应该考虑当属性超过文件记录的大小时发生的情况(它在NTFS的新版本中固定,它是1024字节,不同于记录的大小可能会有所不同的旧版本)。p> 要解决此问题并使文件系统可供未安装软件或驱动程序的用户使用,一个好主意是添加命名流。您可以使用自己的命名约定并存储任何您喜欢的内容,NTFS驱动程序将为您处理记录,即使它们超出1024个限制。未安装软件的用户可以查看该文件系统,并且不会知道这些命名流是否存在,因为默认情况下,应用程序通常会打开NTFS驱动程序传递的未命名流(除非另有指定)