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)

另请参阅

IOCTL_TAPE_SET_POSITION

TapeMiniSetPosition