TAPE_SET_POSITION 结构 (ntddtape.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 指定的逻辑块地址,相对于 分区中指示的分区的开头。 如果媒体未分区,则必须将 分区 设置为零。
TAPE_PSEUDO_LOGICAL_BLOCK
将磁带定位到 Offset 指定的伪逻辑块地址,相对于 分区中指示的分区的开头。 如果未对媒体进行分区, 则分区 必须为零。
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
指定一个偏移量,其类型取决于 方法中的值。 如果指定的方法将磁带定位到块地址, Offset 将指定指定分区中的字节偏移量。 如果指定的方法是跳过块、文件标记或设置标记, 则 Offset 将指定要跳过的数字。 如果 Offset 为零,则磁带位于分区的开头。
Immediate
设置为 TRUE 时,指示目标设备应立即返回状态。 如果设置为 FALSE,则指示设备应在操作完成后返回状态。
注解
请注意,驱动器或磁带可能不支持所有 方法 值。
分区的逻辑编号从 1 到 N。但是,分区号并不意味着磁带上的物理位置。 例如,分区号 1 可能不在媒体的开头。
当偏移量指定要定位的块数、文件标记或设置标记时,偏移量中的正值 N 会导致在 N 个块、文件标记或设置标记上向前定位,在块、文件标记或集标记的分区末尾或磁带端停止。 偏移量中的零值不会导致位置更改。 偏移量中的负值 N 会导致反向定位到分区或磁带介质的开头,超过 N 个块、文件标记或设置标记,在块、文件标记或设置标记的分区开头端停止。
要求
要求 | 值 |
---|---|
Header | ntddtape.h (包括 Ntddtape.h、Minitape.h) |