getTapePosition 函数 (winbase.h)

GetTapePosition 函数以逻辑块或绝对块形式检索磁带的当前地址。

语法

DWORD GetTapePosition(
  [in]  HANDLE  hDevice,
  [in]  DWORD   dwPositionType,
  [out] LPDWORD lpdwPartition,
  [out] LPDWORD lpdwOffsetLow,
  [out] LPDWORD lpdwOffsetHigh
);

参数

[in] hDevice

要获取磁带位置的设备句柄。 此句柄是使用 CreateFile 创建的。

[in] dwPositionType

要获取的地址类型。 此参数的取值可为下列值之一:

含义
TAPE_ABSOLUTE_POSITION
0L
lpdwOffsetLowlpdwOffsetHigh 参数接收特定于设备的块地址。 dwPartition 参数接收零。
TAPE_LOGICAL_POSITION
1L
lpdwOffsetLowlpdwOffsetHigh 参数接收逻辑块地址。 dwPartition 参数接收逻辑磁带分区。

[out] lpdwPartition

指向接收当前磁带分区编号的变量的指针。 分区按逻辑从 1 到 n 进行编号,其中 1 是磁带上的第一个分区,n 是最后一个分区。 当检索到特定于设备的块地址时,或者如果设备仅支持一个分区,则此参数接收零。

[out] lpdwOffsetLow

指向接收当前磁带位置的低序位的变量的指针。

[out] lpdwOffsetHigh

指向接收当前磁带位置的高阶位的变量的指针。 如果不需要高阶位,此参数可以为 NULL

返回值

如果函数成功,则返回值NO_ERROR。

如果函数失败,可能会返回以下错误代码之一。

错误代码 说明
ERROR_BEGINNING_OF_MEDIA
1102L
在中度起始标记失败之前尝试访问数据。
ERROR_BUS_RESET
1111L
在总线上检测到重置条件。
ERROR_DEVICE_NOT_PARTITIONED
1107L
加载磁带时找不到分区信息。
ERROR_END_OF_MEDIA
1100L
操作期间已到达磁带结束标记。
ERROR_FILEMARK_DETECTED
1101L
操作期间已达到文件标记。
ERROR_INVALID_BLOCK_LENGTH
1106L
多卷分区中新磁带上的块大小不正确。
ERROR_MEDIA_CHANGED
1110L
驱动器中的磁带已被更换或删除。
ERROR_NO_DATA_DETECTED
1104L
操作期间已到达数据结束标记。
ERROR_NO_MEDIA_IN_DRIVE
1112L
驱动器中没有媒体。
ERROR_NOT_SUPPORTED
50L
磁带驱动程序不支持请求的函数。
ERROR_PARTITION_FAILURE
1105L
无法对磁带进行分区。
ERROR_SETMARK_DETECTED
1103L
操作期间已达到 setmark。
ERROR_UNABLE_TO_LOCK_MEDIA
1108L
尝试锁定弹出机制失败。
ERROR_UNABLE_TO_UNLOAD_MEDIA
1109L
尝试卸载磁带失败。
ERROR_WRITE_PROTECT
19L
介质受写入保护。

注解

逻辑块地址相对于分区。 每个分区上的第一个逻辑块地址为零。

调用 GetTapeParameters 函数以获取有关磁带驱动器和介质的状态、功能和容量的信息。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 winbase.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

CreateFile

GetTapeParameters

SetTapePosition