다음을 통해 공유


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
dwPartition으로 지정된 파티션에서 dwOffsetLowdwOffsetHigh로 지정된 블록 주소로 테이프를 이동합니다.
TAPE_REWIND
0L
테이프를 현재 파티션의 시작 부분으로 이동합니다. dwPartition, dwOffsetLowdwOffsetHigh 매개 변수는 무시됩니다.
TAPE_SPACE_END_OF_DATA
4l
dwPartition으로 지정된 파티션의 데이터 끝으로 테이프를 이동합니다.
TAPE_SPACE_FILEMARKS
6l
현재 파티션에서 dwOffsetLowdwOffsetHigh 로 지정된 파일 표시 수를 앞으로(또는 뒤로) 이동합니다. dwPartition 매개 변수는 무시됩니다.
TAPE_SPACE_RELATIVE_BLOCKS
5l
현재 파티션에서 dwOffsetLowdwOffsetHigh 로 지정된 블록 수를 앞으로(또는 뒤로) 이동합니다. dwPartition 매개 변수는 무시됩니다.
TAPE_SPACE_SEQUENTIAL_FMKS
7l
현재 파티션에서 처음 나타나는 n 파일 표시로 테이프를 앞으로(또는 뒤로) 이동합니다. 여기서 n은 dwOffsetLowdwOffsetHigh로 지정된 숫자입니다. dwPartition 매개 변수는 무시됩니다.
TAPE_SPACE_SEQUENTIAL_SMKS
9L
테이프를 현재 파티션의 첫 번째 n setmarks로 앞으로(또는 뒤로) 이동합니다. 여기서 n은 dwOffsetLowdwOffsetHigh로 지정된 숫자입니다. dwPartition 매개 변수는 무시됩니다.
TAPE_SPACE_SETMARKS
8L
현재 파티션에서 dwOffsetLowdwOffsetHigh 로 지정된 setmark 수를 앞으로(또는 뒤로) 이동합니다. dwPartition 매개 변수는 무시됩니다.

[in] dwPartition

내 위치에 배치할 파티션입니다. dwPartition이 0이면 현재 파티션이 사용됩니다. 파티션은 1에서 n까지 논리적으로 번호가 매겨집니다. 여기서 1은 테이프의 첫 번째 파티션이고 n은 마지막 파티션입니다.

[in] dwOffsetLow

블록 주소의 하위 비트 또는 dwPositionMethod 매개 변수로 지정된 위치 작업의 개수입니다.

[in] dwOffsetHigh

dwPositionMethod 매개 변수로 지정된 위치 작업에 대한 블록 주소 또는 개수의 상위 비트입니다. 상위 비트가 필요하지 않은 경우 이 매개 변수는 0이어야 합니다.

[in] bImmediate

이동 작업이 시작되는 즉시 반환할지 여부를 나타냅니다. 이 매개 변수가 TRUE이면 함수가 즉시 반환됩니다. FALSE이면 이동 작업이 완료될 때까지 함수가 반환되지 않습니다.

반환 값

함수가 성공하면 반환 값이 NO_ERROR.

함수가 실패하면 다음 오류 코드 중 하나를 반환할 수 있습니다.

오류 Description
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
미디어가 쓰기 보호되어 있습니다.

설명

dwOffsetLowdwOffsetHigh로 지정된 오프셋이 이동할 블록, 파일 표시 또는 setmark의 수를 지정하는 경우 양수 오프셋은 테이프를 마지막 블록, 파일 표시 또는 setmark의 끝으로 앞으로 이동합니다. 음수 오프셋은 테이프를 마지막 블록, 파일 표시 또는 setmark의 시작 부분으로 뒤로 이동합니다. 오프셋이 0이면 테이프가 움직이지 않습니다.

테이프 드라이브 및 미디어의 상태, 기능 및 용량에 대한 정보를 얻으려면 GetTapeParameters 함수를 호출합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 winbase.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

CreateFile

GetTapeParameters

GetTapePosition