软卷标描述块(MTF_SFMB)当硬件不支持卷标的时候用来模拟卷标。 设置 MTF_TAPE DBLK 的磁带属性字段来启用软卷标。 MTF_TAPE DBLK 的软卷标块大小字段决定了 MTF_SFMB DBLK 的大小。 MTF_SFMB DBLK 必须设置为能从物理块边界开始和在物理块边界结束。 MTF_SFMB DBLK 不能有关联的数据流。 MTF_SFMB DBLK 包含了上一个卷标的一个数组的物理块地址。 如果数组中一个入口都没有被使用,那么它需要被设为 0。
偏移 | 内容 | 类型 | 大小 |
---|---|---|---|
0 0h | 公共的块头 | MTF_DB_HDR | 52 字节 |
52 34h | 卷标条目数 | UINT32 | 4 字节 |
56 38h | 已使用的卷标条目 | UINT32 | 4 字节 |
60 3Ch | 先前的卷标数组的 PBA | UINT32 (应该是 UINT64) | sizeof (MTF_SFMB) - 60 |
公共的块头 字段是一个在每个 DBLK 开头的 52 字节的 MTF_DB_HDR 结构。 MTF_DB_HDR 结构的下列成员必须设为定义的值。
卷标条目数 是一个 4 字节的包含了上一个 PBA 的卷标数组有多少个卷标的字段。
已使用的卷标条目 是一个 4 字节的包含上一个 PBA 的卷标数组有多少个有效的卷标的字段。
先前的卷标数组的 PBA 字段是一个卷标元素的数组。 每个卷标元素是一个上一个卷标的 8 字节的 PBA。 上一个卷标数组的 PBA 是累积的。 条目总是按降序排。 当先前的文件标记的数量超过了数组中的条目数,数组是用最接近数据结尾(EOD)的条目来填充的。 如果数组中的条目没被使用,那么它的值会被设为 0。
编程注意事项:MTF_SFMB DBLK 包含了累积的卷标 PBAs 列表。 为了创建一个直到数据结尾的卷标列表。读取 MTF_SFMB DBLK。 如果卷标条目等于已使用的卷标条目, 那么必须读取先前的 MTF_SFMB DBLKs 来创建完整的卷标列表。