Freigeben über


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

Weitere Informationen

TapeClassPhysicalBlockToLogicalBlock