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 struct _TAPE_PHYS_POSITION {

ULONG SeekBlockAddress;

ULONG SpaceBlockCount;

} TAPE_PHYS_POSITION,PTAPE_PHYS_POSITION;

注解

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

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

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

要求

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

另请参阅

TapeClassPhysicalBlockToLogicalBlock