Функция 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 |