Поделиться через


Функция SetTapePosition (winbase.h)

Функция SetTapePosition задает положение ленты на указанном устройстве.

Синтаксис

DWORD SetTapePosition(
  [in] HANDLE hDevice,
  [in] DWORD  dwPositionMethod,
  [in] DWORD  dwPartition,
  [in] DWORD  dwOffsetLow,
  [in] DWORD  dwOffsetHigh,
  [in] BOOL   bImmediate
);

Параметры

[in] hDevice

Дескриптор устройства, на котором устанавливается положение ленты. Этот дескриптор создается с помощью функции CreateFile .

[in] dwPositionMethod

Тип выполняемого позиционирования. Этот параметр должен иметь одно из следующих значений.

Значение Значение
TAPE_ABSOLUTE_BLOCK
1L
Перемещает ленту на адрес блока для конкретного устройства, указанный параметрами dwOffsetLow и dwOffsetHigh . Параметр dwPartition игнорируется.
TAPE_LOGICAL_BLOCK
2L
Перемещает ленту на адрес блока, указанный dwOffsetLow и dwOffsetHigh в секции, указанной параметром dwPartition.
TAPE_REWIND
0L
Перемещает ленту в начало текущей секции. Параметры dwPartition, dwOffsetLow и dwOffsetHigh игнорируются.
TAPE_SPACE_END_OF_DATA
4L
Перемещает ленту в конец данных в секции, указанной параметром dwPartition.
TAPE_SPACE_FILEMARKS
6l
Перемещает ленту вперед (или назад) число меток файлов, указанных dwOffsetLow и dwOffsetHigh в текущей секции. Параметр dwPartition игнорируется.
TAPE_SPACE_RELATIVE_BLOCKS
5l
Перемещает ленту вперед (или назад) на количество блоков, указанное dwOffsetLow и dwOffsetHigh в текущей секции. Параметр dwPartition игнорируется.
TAPE_SPACE_SEQUENTIAL_FMKS
7l
Перемещает ленту вперед (или назад) в первое вхождение n меток в текущей секции, где n — это число, указанное dwOffsetLow и dwOffsetHigh. Параметр dwPartition игнорируется.
TAPE_SPACE_SEQUENTIAL_SMKS
9L
Перемещает ленту вперед (или назад) в первое вхождение n меток setmark в текущей секции, где n — это число, указанное dwOffsetLow и dwOffsetHigh. Параметр dwPartition игнорируется.
TAPE_SPACE_SETMARKS
8L
Перемещает ленту вперед (или назад) на количество меток, заданных dwOffsetLow и dwOffsetHigh в текущей секции. Параметр dwPartition игнорируется.

[in] dwPartition

Секционирование для размещения внутри. Если значение dwPartition равно нулю, используется текущая секция. Секции нумеруются логически от 1 до n, где 1 — первая секция на ленте, а n — последняя.

[in] dwOffsetLow

Биты нижнего порядка адреса блока или счетчика для операции позиции, указанной параметром dwPositionMethod .

[in] dwOffsetHigh

Биты высокого порядка адреса блока или счетчика для операции позиции, указанной параметром dwPositionMethod . Если биты высокого порядка не требуются, этот параметр должен быть равен нулю.

[in] bImmediate

Указывает, следует ли возвращать, как только начинается операция перемещения. Если этот параметр имеет значение TRUE, функция возвращает немедленно; Значение false, функция не возвращается до завершения операции перемещения.

Возвращаемое значение

Если функция выполняется успешно, возвращаемое значение будет 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
Метка была достигнута во время операции.
ERROR_UNABLE_TO_LOCK_MEDIA
1108L
Не удалось заблокировать механизм извлечения.
ERROR_UNABLE_TO_UNLOAD_MEDIA
1109L
Попытка выгрузить ленту завершилась сбоем.
ERROR_WRITE_PROTECT
19L
Носитель защищен от записи.

Комментарии

Если смещение, заданное dwOffsetLow и dwOffsetHigh , указывает количество блоков, меток файлов или меток setmark для перемещения, положительное смещение перемещает ленту вперед в конец последнего блока, метки или метки. Отрицательное смещение перемещает ленту назад к началу последнего блока, метки или метки. Если смещение равно нулю, лента не перемещается.

Чтобы получить сведения о состоянии, возможностях и емкости ленточных накопителей и носителей, вызовите функцию GetTapeParameters .

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header winbase.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

CreateFile

GetTapeParameters

GetTapePosition