指定したデバイスでテープの位置を設定する
Declare Function SetTapePosition Lib "kernel32.dll" _
(ByVal hDevice As Long, ByVal dwPositionMethod As Long, _
ByVal dwPartition As Long, ByVal dwOffsetLow As Long, _
ByVal dwOffsetHigh As Long, ByVal bimmediate As Long) As Long
Declare Function SetTapePosition Lib "kernel32.dll" _
(ByVal hDevice As Integer, ByVal dwPositionMethod As Integer, _
ByVal dwPartition As Integer, ByVal dwOffsetLow As Integer, _
ByVal dwOffsetHigh As Integer, ByVal bimmediate As Integer) As Integer
DWORD SetTapePosition(
HANDLE hDevice,
DWORD dwPositionMethod,
DWORD dwPartition,
DWORD dwOffsetLow,
DWORD dwOffsetHigh,
BOOL bImmediate
);
引数
hDevice
テープデバイスのハンドル(CreateFile()関数の戻り値)dwPositionMethod
実行する位置設定のタイプを指定する定数の一つdwPartition
テープの位置を設定するパーティション
0のとき現在のパーティション
ブロックアドレス、またはdwPositionMethodで指定された位置設定操作カウントの上位32ビットdwOffsetHigh
同、下位32ビットbimmediate
下位32ビットが不要な場合0
0のとき 操作が終了するまで関数は帰らない戻り値
1のとき 操作が終了する前に帰る
正常終了のとき NO_ERROR(=0)備考
エラーのとき エラーを示す定数
パーティションには、論理的に1からnまで番号が付けられている。dwPositionMethodの定数
1はテープの先頭にあるパーティションを、nは最後のパーティションを示す。
dwOffsetHighで指定されたオフセットは、移動するブロック、ファイルマーク
またはセットマークの数を示す。
現在状況や性能を調べるにはGetTapeParameters()関数を使う。
Const TAPE_ABSOLUTE_BLOCK 'dwOffsetLowとdwOffsetHighのブロックアドレスまでエラーコードを示す定数
'テープを移動させる
'dwPartitionは無視される
Const TAPE_LOGICAL_BLOCK 'dwPartitionが示すパーティションで
'dwOffsetLowとdwOffsetHighのブロックアドレスまで
'テープを移動させる
Const TAPE_REWIND '現在のパーティションの先頭までテープを移動させる
'dwPartition,,dwOffsetHighは無視
Const TAPE_SPACE_END_OF_DATA 'dwPartitionが示すパーティションのデータの終端まで
'テープを移動させる
Const TAPE_SPACE_FILEMARKS '現在のパーティションでとdwOffsetHighが
'示すファイルマーク数だけテープを移動する
'dwPartitionは無視される
Const TAPE_SPACE_RELATIVE_BLOCKS '同、ブロック数
Const TAPE_SPACE_SEQUENTIAL_FMKS '現在のパーティションでn個のファイルマークのうち
'最初に発見したマークまでテープを移動する。
'nはとdwOffsetHighによって決まる
'dwPartitionは無視される
Const TAPE_SPACE_SEQUENTIAL_SMKS '同、セットマーク
Const TAPE_SPACE_SETMARKS '現在のパーティションでとdwOffsetHighの示す
'セットマーク数だけテープを移動する
'dwPartitionは無視される
Const ERROR_BEGINNING_OF_MEDIA = 1102& '「メディアの先頭」マーカーより前にあるデータに
'アクセスしようとした
Const ERROR_BUS_RESET = 1111& 'バスがリセット状態になっている
Const ERROR_END_OF_MEDIA = 1100& '操作中に「テープの終端」マーカーに到達した
Const ERROR_FILEMARK_DETECTED = 1101& '操作中にファイルマークに到達した
Const ERROR_SETMARK_DETECTED = 1103& '操作中にセットマークに到達した
Const ERROR_NO_DATA_DETECTED = 1104& '操作中に「データの終端」マーカーに到達した
Const ERROR_PARTITION_FAILURE = 1105& 'テープ内にパーティションを作成できなかった
Const ERROR_INVALID_BLOCK_LENGTH = 1106& 'マルチボリュームパーティションの新しいテープの
'ブロックサイズが間違っている
Const ERROR_DEVICE_NOT_PARTITIONED = 1107& 'テープ内にパーティションが見つからなかった
Const ERROR_MEDIA_CHANGED = 1110& 'ドライブ内のテープが取り替えられた or 取り出された
Const ERROR_NO_MEDIA_IN_DRIVE = 1112& 'メディアがセットされていない
Const ERROR_NOT_SUPPORTED = 50& '関数がサポートされていない
Const ERROR_UNABLE_TO_LOCK_MEDIA = 1108& 'テープをロックできなかった
Const ERROR_UNABLE_TO_UNLOAD_MEDIA = 1109& 'テープのアンロードに失敗した
Const ERROR_WRITE_PROTECT = 19& 'メディアが書込み禁止状態