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 |