1

NTFS 的 Microsoft 文档描述了属性的结构。它显示如下:

typedef struct _ATTRIBUTE_RECORD_HEADER {
  ATTRIBUTE_TYPE_CODE TypeCode;
  ULONG               RecordLength;
  UCHAR               FormCode;
  UCHAR               NameLength;
  USHORT              NameOffset;
  USHORT              Flags;
  USHORT              Instance;
  union {
    struct {
      ULONG  ValueLength;
      USHORT ValueOffset;
      UCHAR  Reserved[2];
    } Resident;
    struct {
      VCN      LowestVcn;
      VCN      HighestVcn;
      USHORT   MappingPairsOffset;
      UCHAR    Reserved[6];
      LONGLONG AllocatedLength;
      LONGLONG FileSize;
      LONGLONG ValidDataLength;
      LONGLONG TotalAllocated;
    } Nonresident;
  } Form;
} ATTRIBUTE_RECORD_HEADER, *PATTRIBUTE_RECORD_HEADER;

非常驻属性的最后一个成员 ,TotalAllocated似乎不存在。3rd 方文档没有提到它,实际的 NTFS 文件系统不包含这样的成员(ValidDataLength 紧随其后的是数据运行,如MappingPairsOffset.

从文档本身来看,它应该记录集群的总数(而不是字节总数)。

总分配

为文件分配的总数(分配的簇的总和)。

有人认识这个吗?

4

1 回答 1

2

该字段确实存在,但仅存在于压缩文件上(即Flags设置了该字段的第 1 位);然后MappingPairsOffset0x48而不是通常0x40为额外的字段腾出空间。

这在此处的第 3 方 NTFS 文档的脚注中有所提及。

于 2021-02-28T13:15:48.353 回答