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,将逻辑块地址从应用程序转换为磁带设备的物理块地址。 TapeClassLogicalBlockToPhysicalBlock SCSI-2 或更高版本驱动程序不需要,因为符合 SCSI-2 或更高版本标准的设备支持逻辑块寻址。

若要将磁带定位到此例程返回的物理块地址,磁带微型类驱动程序会发出两个 SCSI 命令:一个 LOCATE 命令,用于将磁带定位到 SeekBlockAddress,然后使用 SPACE 命令将磁带 SpaceBlockCount。 如果磁带上的伪逻辑块小于物理块,则需要 SpaceBlockCount 值;在这种情况下,逻辑块边界可能与物理块边界不一致。

如果磁带微型类驱动程序使用不受支持的磁带密度代码调用此例程,TapeClassLogicalBlockToPhysicalBlock 不执行任何转换。 它返回 SeekBlockAddress 中的逻辑块地址,并在 spaceBlockCount中返回零。

要求

要求 价值
目标平台 桌面
标头 minitape.h (包括 Minitape.h)
Tape.lib

另请参阅

TapeClassPhysicalBlockToLogicalBlock