NTFS文件系统规范(一)
扇区数据结构 非驻留数据中的每个簇都有一个特定的序号,这个序号就叫做虚拟簇号,虚拟簇号0指向数据流的第一个簇。
卷中的每一个簇都有一个特定的序号,这个序号就叫做逻辑簇号,逻辑簇号0指向卷中的第一个簇(引导扇区)。
存放在间隔的簇中的属性数据称为流。每一个流都由起始簇号和尺寸来描述。流的起始簇号是相对于前一个流的偏移,该值是一个有符号数。流描述的格式如下:
一个流描述之后紧随着下一个流描述,如果下一个描述的SD_Desc为0则表示当前描述是最后一个。
一般情况下压缩文件和稀疏文件数据都以流的形式描述。
例1:通常情况
流描述:21 20 ED 5 22 48 7 48 22 21 28 C8 DB 0 流1: SD_Desc = 21 –偏移占2个字节,尺寸占1个字节。
SD_Size = 20 (1字节)
SD_Off = 5ED (2字节)
Offset = 5ED
Length= 20
流2: SD_Desc = 22 –偏移占2个字节,尺寸占2个字节。
SD_Size = 748 (2字节)
SD_Off = 2248 (2字节)
Offset = 2835 (2248+5ED)
Length=748
流3: SD_Desc = 21 –偏移占2个字节,尺寸占1个字节。
SD_Size = 28 (1字节)
SD_Off = DBC8 (2字节)
Offset = 3FD (2835+FFFFDBC8)
Length=28
流4: SD_Desc = 0。描述结束标志
小计:
0x20 个簇存放在簇号 0x5ED 开始处
0x748 个簇存放在簇号 0x2853 开始处
0x28 个簇存放在簇号 0x3FD 开始处
例2:压缩流
流描述:11 08 40 01 08 11 10 08 11 0C 10 01 04 00
流1: SD_Desc = 11 –偏移占1个字节,尺寸占1个字节。
SD_Size = 8 (1字节)
SD_Off = 40 (1字节)
Offset = 40
Length= 8
流2: SD_Desc = 01 –偏移占0个字节,尺寸占1个字节。
SD_Size = 8 (1字节)
SD_Off = -
Offset = -
Length= 8
流3: SD_Desc = 11 –偏移占1个字节,尺寸占1个字节。
SD_Size = 10 (1字节)
SD_Off = 8 (1字节)
Offset = 48 (40+8)
Length= 20
流4: SD_Desc = 11 –偏移占个字节,尺寸占1个字节。
SD_Size = C (1字节)
SD_Off = 10 (1字节)
Offset = 58(48+10)
Length= C
流5: SD_Desc = 01 –偏移占0个字节,尺寸占1个字节。
SD_Size = 4
SD_Off = -
|