TapeClassLogicalBlockToPhysicalBlock-Funktion (minitape.h)
Die TapeClassLogicalBlockToPhysicalBlock-Routine übersetzt eine pseudologische Blockadresse in eine physische Blockadresse. Diese Routine gilt für SCSI-1-Geräte.
Syntax
TAPE_PHYS_POSITION TapeClassLogicalBlockToPhysicalBlock(
[in] UCHAR DensityCode,
[in] ULONG LogicalBlockAddress,
[in] ULONG BlockLength,
[in] BOOLEAN FromBOT
);
Parameter
[in] DensityCode
Gibt den Bandmediendichtecode an. Diese Routine unterstützt Bänder mit den folgenden Dichtecodes: QIC_24, QIC_120, QIC_150, QIC_525, QIC_1000, QIC_2GB, QIC_1350 und QIC_2100.
[in] LogicalBlockAddress
Gibt eine pseudologische Blockadresse an.
[in] BlockLength
Gibt die logische Blockgröße in Bytes an.
[in] FromBOT
TRUE gibt an, dass die Berechnung des physischen Blocks am Anfang des Bandes beginnen und den Header des physischen Geräts berücksichtigen soll. FALSE gibt an, dass das Band über zwei Partitionen verfügt, dass sich die Blockadresse in der Verzeichnispartition befindet und daher kein physischer Geräteheader in die Berechnung einbezogen werden muss.
Rückgabewert
TapeClassLogicalBlockToPhysicalBlock gibt eine Struktur zurück, die die physische Blockadresse enthält:
typedef struct _TAPE_PHYS_POSITION {
ULONG SeekBlockAddress;
ULONG SpaceBlockCount;
} TAPE_PHYS_POSITION, PTAPE_PHYS_POSITION;
Hinweise
Ein Band-Miniklassentreiber ruft TapeClassLogicalBlockToPhysicalBlock auf, um eine logische Blockadresse von einer Anwendung in eine physische Blockadresse für ein Bandgerät zu übersetzen. TapeClassLogicalBlockToPhysicalBlock ist für SCSI-2- oder höher-Treiber nicht erforderlich, da Geräte, die den Standards SCSI-2 oder höher entsprechen, die logische Blockadressierung unterstützen.
Um ein Band an der physischen Blockadresse zu positionieren, die von dieser Routine zurückgegeben wird, gibt ein Band-Miniklassentreiber zwei SCSI-Befehle aus: einen LOCATE-Befehl, um das Band auf seekBlockAddress zu positionieren, und dann einen SPACE-Befehl, um das Band SpaceBlockCount zu fördern. Der SpaceBlockCount-Wert ist erforderlich, wenn die pseudologischen Blöcke auf dem Band kleiner als die physischen Blöcke sind. In diesem Fall ist die Logische Blockgrenze möglicherweise nicht an einer physischen Blockgrenze ausgerichtet.
Wenn ein Band-Miniklassentreiber diese Routine mit einem nicht unterstützten Banddichtecode aufruft, führt TapeClassLogicalBlockToPhysicalBlock keine Übersetzung durch. Es gibt die logische Blockadresse in SeekBlockAddress und null in SpaceBlockCount zurück.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Desktop |
Kopfzeile | minitape.h (schließen Sie Minitape.h ein) |
Bibliothek | Tape.lib |