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 表示磁帶有兩個分割區,區塊位址位於目錄分割區上,因此不需要將實體裝置標頭納入計算中。
傳回值
TapeClassLogicalBlockToPhysicalBlock 會傳回包含實體區塊地址的結構:
typedef 結構 _TAPE_PHYS_POSITION {
ULONG SeekBlockAddress;
ULONG SpaceBlockCount;
} TAPE_PHYS_POSITION, PTAPE_PHYS_POSITION;
備註
磁帶迷你類別驅動程式會呼叫 TapeClassLogicalBlockToPhysicalBlock ,將邏輯區塊位址從應用程式轉譯為磁帶裝置的實體區塊位址。 SCSI-2 或更新版本的驅動程式不需要TapeClassLogicalBlockToPhysicalBlock,因為符合SCSI-2或更新版本的裝置支援邏輯區塊尋址。
若要將磁帶放置在此例程傳回的實體區塊位址,磁帶迷你類別驅動程式會發出兩個 SCSI 命令:將磁帶放置到 SeekBlockAddress 的 LOCATE 命令,然後發出 SPACE 命令來前進磁帶 SpaceBlockCount。 如果磁帶上的虛擬邏輯區塊小於實體區塊,則需要 SpaceBlockCount 值;在此情況下,邏輯區塊界限可能不會與實體區塊界限對齊。
如果磁帶迷你類別驅動程式使用不支援的磁帶密度程式代碼呼叫此例程, TapeClassLogicalBlockToPhysicalBlock 就不會執行任何轉譯。 它會傳回 SeekBlockAddress 中的邏輯區塊位址,並在 SpaceBlockCount 中傳回零。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | minitape.h (包含 Minitape.h) |
程式庫 | Tape.lib |