TAPE_SET_POSITION 结构 (minitape.h)
TAPE_SET_POSITION 结构与 IOCTL_TAPE_SET_POSITION 请求结合使用,将磁带上的当前位置移动到指定的分区和偏移量。
语法
typedef struct _TAPE_SET_POSITION {
ULONG Method;
ULONG Partition;
LARGE_INTEGER Offset;
BOOLEAN Immediate;
} TAPE_SET_POSITION, *PTAPE_SET_POSITION;
成员
Method
指示要执行的定位类型。 此成员必须具有以下值之一:
TAPE_REWIND
如果介质已分区,则将磁带置于 分区 中指示的分区的开头;如果介质未分区,则定位到介质的开头。 如果媒体未分区,则必须将 分区 设置为零。 将忽略 Offset 成员。
TAPE_ABSOLUTE_BLOCK
将磁带置于绝对块地址处,该地址位于偏移 量指定的起始位置。 将忽略 Partition 成员中的值。
TAPE_LOGICAL_BLOCK
将磁带定位到 Offset 指定的逻辑块地址,相对于 Partition 中指示的分区的开头。 如果媒体未分区,则必须将 分区 设置为零。
TAPE_PSEUDO_LOGICAL_BLOCK
将磁带定位到 Offset 指定的伪逻辑块地址,相对于 Partition 中指示的分区的开头。 如果未对媒体进行分区, 则 Partition 必须为零。
TAPE_SPACE_END_OF_DATA
将磁带置于 分区中指示的分区末尾,或者如果介质未分区,则放置在磁带的末尾。 将忽略 Offset 成员。
TAPE_SPACE_RELATIVE_BLOCKS
从当前位置开始,将磁带置于 Offset 指定的块数之后。 将忽略 Partition 成员。
TAPE_SPACE_FILEMARKS
从当前位置开始,将磁带置于 Offset 指定的文件标记数之后。 将忽略 Partition 成员。
TAPE_SPACE_SEQUENTIAL_FMKS
从当前位置开始,将磁带置于 由 Offset 指定的连续文件标记数(如果有)的下一次出现之后。 将忽略 Partition 成员。
TAPE_SPACE_SETMARKS
从当前位置开始,将磁带置于 Offset 指定的设置标记数之后。 将忽略 Partition 成员。
TAPE_SPACE_SEQUENTIAL_SMKS
从当前位置开始,将磁带置于 由 Offset 指定的连续设置标记数的下一个匹配项(如果有)之后。 将忽略 Partition 成员。
Partition
指示要在其中设置磁带位置的分区。 此成员必须具有以下值之一:
- NOT_PARTITIONED (或零)
- DATA_PARTITION
- DIRECTORY_PARTITION
如果未对媒体进行分区,则此成员为零。
Offset
指定其类型依赖于 Method 中的值的偏移量。 如果指定方法将磁带定位到块地址, 则 Offset 将指定指定分区中的字节偏移量。 如果指定的方法是跳过块、文件标记或设置标记, 则 Offset 指定要跳过的数字。 如果 Offset 为零,则磁带位于分区的开头。
Immediate
设置为 TRUE 时,指示目标设备应立即返回状态。 设置为 FALSE 时,指示设备应在操作完成后返回状态。
注解
请注意,驱动器或磁带可能不支持所有 Method 值。
分区按逻辑从 1 到 N 进行编号。但是,分区号并不意味着磁带上的物理位置。 例如,分区编号 1 可能不在媒体的开头。
当偏移量指定多个块、文件标记或设置标记时,偏移量中的正值 N 会导致在 N 块、文件标记或设置标记上向前定位,在块、文件标记或设置标记的分区末尾或磁带末尾端停止。 偏移量中的零值不会导致位置变化。 偏移量中的负值 N 会导致反向定位到分区或磁带介质的开头,超过 N 个块、文件标记或设置标记,在块、文件标记或设置标记的分区开头端停止。
要求
要求 | 值 |
---|---|
Header | minitape.h (包括 Ntddtape.h、Minitape.h) |