TapeClassLogicalBlockToPhysicalBlock 関数 (minitape.h)
TapeClassLogicalBlockToPhysicalBlock ルーチンは、擬似ブロック アドレスを物理ブロック アドレスに変換します。 このルーチンは SCSI-1 デバイス用です。
構文
TAPE_PHYS_POSITION TapeClassLogicalBlockToPhysicalBlock(
[in] UCHAR DensityCode,
[in] ULONG LogicalBlockAddress,
[in] ULONG BlockLength,
[in] BOOLEAN FromBOT
);
パラメーター
[in] DensityCode
テープ メディア密度コードを指定します。 このルーチンは、QIC_24、QIC_120、QIC_150、QIC_525、QIC_1000、QIC_2GB、QIC_1350、QIC_2100の各密度コードを持つテープをサポートします。
[in] LogicalBlockAddress
擬似ブロック アドレスを指定します。
[in] BlockLength
論理ブロック サイズをバイト単位で指定します。
[in] FromBOT
TRUE は 、物理ブロックの計算は、物理デバイス ヘッダーのテープとアカウントの先頭から開始する必要があることを示します。 FALSE は 、テープに 2 つのパーティションがあり、ブロック アドレスがディレクトリ パーティション上にあるため、物理デバイス ヘッダーを計算に組み込む必要がないことを示します。
戻り値
TapeClassLogicalBlockToPhysicalBlock は、物理ブロック アドレスを含む構造体を返します。
typedef 構造体_TAPE_PHYS_POSITION {
ULONG SeekBlockAddress;
ULONG SpaceBlockCount;
} TAPE_PHYS_POSITION、PTAPE_PHYS_POSITION。
注釈
テープ ミニクラス ドライバーは 、TapeClassLogicalBlockToPhysicalBlock を呼び出して、アプリケーションからテープ デバイスの物理ブロック アドレスに論理ブロック アドレスを変換します。 SCSI-2 以降の標準に準拠するデバイスでは論理ブロック アドレス指定がサポートされているため、SCSI-2 以降のドライバーには TapeClassLogicalBlockToPhysicalBlock は必要ありません。
テープをこのルーチンによって返される物理ブロック アドレスに配置するために、テープ ミニクラス ドライバーは 2 つの SCSI コマンドを発行します。このコマンドは、テープを SeekBlockAddress に配置する LOCATE コマンドと、テープ SpaceBlockCount を進めるための SPACE コマンドです。 テープ上の疑似論理ブロックが物理ブロックより小さい場合は 、SpaceBlockCount 値が必要です。その場合、論理ブロック境界が物理ブロック境界と一致しない可能性があります。
テープ ミニクラス ドライバーがサポートされていないテープ密度コードを使用してこのルーチンを呼び出した場合、 TapeClassLogicalBlockToPhysicalBlock は変換を実行しません。 SeekBlockAddress で論理ブロック アドレスを返し、SpaceBlockCount で 0 を返します。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | minitape.h (Minitape.h を含む) |
Library | Tape.lib |