GetTapeParameters

機能
テープやテープドライブの情報を取得する
Declare Function GetTapeParameters Lib "kernel32.dll"  _
(ByVal hDevice As Long, ByVal dwOperation As Long, lpdwSize As Long, _
lpTapeInformation As Any) As Long
Declare Function GetTapeParameters Lib "kernel32.dll"  _
(ByVal hDevice As Integer, ByVal dwOperation As Integer, lpdwSize As Integer, _
lpTapeInformation As Integer) As Integer

DWORD GetTapeParameters(
HANDLE hDevice,
DWORD dwOperation,
LPDWORD lpdwSize,
LPVOID lpTapeInformation
);
引数
hDevice

テープデバイスのハンドル(CreateFile()関数の戻り値)
dwOperation
要求する情報のを指定する定数の一つ
lpdwSize
(戻り値)要求したデータを受け取るバッファサイズを受け取る変数
バッファサイズが不足の場合、必要なバイト数が返る
(戻り値)データを受け取る構造体
dwOperationがGET_TAPE_MEDIA_INFORMATIONのとき      TAPE_GET_MEDIA_PARAMETERS構造体
dwOperationがGET_TAPE_DRIVE_INFORMATIONのとき      TAPE_GET_DRIVE_PARAMETERS構造体
戻り値
正常終了のとき                     NO_ERROR(=0)
エラーのとき                       エラーを示す定数
備考
dwOperationにGET_TAPE_DRIVE_INFORMATIONをセットして関数を呼び出すと
ブロックサイズの範囲( 最大値と最小値)が返る。
しかしこの値はドライブの制限値ではなくシステムの制限値を返すので
実際にはその値でブロックサイズを指定できないことがある。



dwOperationの定数
Const GET_TAPE_MEDIA_INFORMATION                    'テープデバイスのテープの情報
Const GET_TAPE_DRIVE_INFORMATION = 1                'テープデバイスの情報


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&                     'メディアが書込み禁止状態