Функция 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 для преобразования адреса логического блока из приложения в физический адрес блока для ленточного устройства. TapeClassLogicalBlockToPhysicalBlock не требуется для драйверов SCSI-2 или более поздних версий, так как устройства, соответствующие стандартам SCSI-2 или более поздних версий, поддерживают адресацию логических блоков.

Чтобы разместить ленту в адрес физического блока, возвращенный этой подпрограммой, драйвер мини-класса ленты выдает две команды SCSI: команду LOCATE для размещения ленты в SeekBlockAddress, а затем команду SPACE для продвижения ленты SpaceBlockCount. Значение SpaceBlockCount необходимо, если псевдологические блоки на ленте меньше физических блоков; в этом случае граница логического блока может не выровняться с границей физического блока.

Если драйвер мини-класса ленты вызывает эту подпрограмму с неподдерживаемого кода плотности ленты, TapeClassLogicalBlockToPhysicalBlock не выполняет никакого преобразования. Он возвращает адрес логического блока в SeekBlockAddress и ноль в SpaceBlockCount.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть minitape.h (включая Minitape.h)
Библиотека Tape.lib

См. также раздел

TapeClassPhysicalBlockToLogicalBlock