MULTI_SECTOR_HEADER 结构
[此结构仅对 NTFS 卷的版本 3 有效;它可能在将来的版本中更改。]
表示多sector 标头。
语法
typedef struct _MULTI_SECTOR_HEADER {
UCHAR Signature[4];
USHORT UpdateSequenceArrayOffset;
USHORT UpdateSequenceArraySize;
} MULTI_SECTOR_HEADER, *PMULTI_SECTOR_HEADER;
成员
-
Signature
-
签名。 此值方便用户使用。
-
UpdateSequenceArrayOffset
-
从此结构的开头到更新序列数组的偏移量。 更新序列数组必须在第一个扇区中的最后一个 USHORT 值之前结束。
-
UpdateSequenceArraySize
-
更新序列数组的大小(以字节为单位)。
备注
请注意,此结构没有关联的头文件。
此结构定义仅对主版本 3 和次要版本 0 或 1 有效,如 FSCTL_GET_NTFS_VOLUME_DATA 报告的那样。
多分区标头和更新序列数组为物理扇区大小大于或等于序列号步幅 (512) 或未按顺序传输扇区的设备提供不完整的多分区传输的检测。 如果存在的设备扇区大小小于序列号步幅,并且有时传输扇区的顺序不一样,则更新序列数组不会提供不完整传输的绝对检测。 序列号步幅设置为足够小的数字,为所有已知硬盘提供绝对保护。 它未设置更小,或者可能存在过多的运行时或空间开销。
更新序列数组由 nUSHORT 值的数组组成,其中 n 是被保护的结构的大小除以序列号步幅。 第一个单词包含更新序列号,该序列号是包含结构已写入磁盘的次数的周期计数器。 接下来是上次将包含结构写入磁盘时被更新序列号覆盖的 n 个保存的 USHORT 值。
每次将受保护的结构写入磁盘时,每个序列号步幅中的最后一个单词将保存到其在序列号数组中的相应位置,然后用下一个更新序列号覆盖它。 写入后或每当读取结构时,序列号数组中保存的单词将还原到其在结构中的实际位置。 在读取时还原已保存的单词之前,每个步幅末尾的所有序列号都与数组开头的实际序列号进行比较。 如果这些比较中的任何一个不相等,则检测到多组传输失败。
数组的大小由包含结构的大小决定。 更新序列数组应包含在它正在保护的结构的标头的末尾,因为其大小可变。 用户必须确保为包含结构保留正确的空间: (结构的大小 /512 + 1) * size of (USHORT) 。
另请参阅