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,将逻辑块地址从应用程序转换为磁带设备的物理块地址。 TapeClassLogicalBlockToPhysicalBlock SCSI-2 或更高版本驱动程序不需要,因为符合 SCSI-2 或更高版本标准的设备支持逻辑块寻址。
若要将磁带定位到此例程返回的物理块地址,磁带微型类驱动程序会发出两个 SCSI 命令:一个 LOCATE 命令,用于将磁带定位到 SeekBlockAddress,然后使用 SPACE 命令将磁带 SpaceBlockCount。 如果磁带上的伪逻辑块小于物理块,则需要 SpaceBlockCount 值;在这种情况下,逻辑块边界可能与物理块边界不一致。
如果磁带微型类驱动程序使用不受支持的磁带密度代码调用此例程,TapeClassLogicalBlockToPhysicalBlock 不执行任何转换。 它返回 SeekBlockAddress 中的逻辑块地址,并在 spaceBlockCount中返回零。
要求
| 要求 | 价值 |
|---|---|
| 目标平台 | 桌面 |
| 标头 | minitape.h (包括 Minitape.h) |
| 库 | Tape.lib |