Partager via


Fonction TapeClassalBlockToPhysicalBlock (minitape.h)

La routine TapeClassLogicalBlockToPhysicalBlock traduit une adresse de bloc pseudo-logique en adresse de bloc physique. Cette routine concerne les appareils SCSI-1.

Syntaxe

TAPE_PHYS_POSITION TapeClassLogicalBlockToPhysicalBlock(
  [in] UCHAR   DensityCode,
  [in] ULONG   LogicalBlockAddress,
  [in] ULONG   BlockLength,
  [in] BOOLEAN FromBOT
);

Paramètres

[in] DensityCode

Spécifie le code de densité du média de bande. Cette routine prend en charge les bandes avec les codes de densité suivants : QIC_24, QIC_120, QIC_150, QIC_525, QIC_1000, QIC_2GB, QIC_1350 et QIC_2100.

[in] LogicalBlockAddress

Spécifie une adresse de bloc pseudo-logique.

[in] BlockLength

Spécifie la taille du bloc logique, en octets.

[in] FromBOT

TRUE indique que le calcul du bloc physique doit commencer au début de la bande et prendre en compte l’en-tête de l’appareil physique. FALSE indique que la bande a deux partitions, que l’adresse de bloc se trouve sur la partition de répertoire et qu’aucun en-tête d’appareil physique ne doit donc être pris en compte dans le calcul.

Valeur retournée

TapeClassalBlockToPhysicalBlock retourne une structure contenant l’adresse de bloc physique :

typedef struct _TAPE_PHYS_POSITION {

ULONG SeekBlockAddress ;

ULONG SpaceBlockCount ;

} TAPE_PHYS_POSITION, PTAPE_PHYS_POSITION ;

Remarques

Un pilote de miniclasse de bande appelle TapeClassLogicalBlockToPhysicalBlock pour traduire une adresse de bloc logique d’une application en adresse de bloc physique pour un périphérique à bande. TapeClassalBlockToPhysicalBlock n’est pas nécessaire pour les pilotes SCSI-2 ou versions ultérieures, car les appareils qui respectent les normes SCSI-2 ou ultérieures prennent en charge l’adressage de blocs logiques.

Pour positionner une bande sur l’adresse de bloc physique retournée par cette routine, un pilote de miniclasse de bande émet deux commandes SCSI : une commande LOCATE pour positionner la bande sur SeekBlockAddress, puis une commande SPACE pour faire avancer la bande SpaceBlockCount. La valeur SpaceBlockCount est nécessaire si les blocs pseudologicaux de la bande sont plus petits que les blocs physiques ; dans ce cas, la limite de blocs logiques peut ne pas s’aligner sur une limite de bloc physique.

Si un pilote de miniclasse de bande appelle cette routine avec un code de densité de bande non pris en charge, TapeClassLogicalBlockToPhysicalBlock n’effectue aucune traduction. Il retourne l’adresse de bloc logique dans SeekBlockAddress et zéro dans SpaceBlockCount.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête minitape.h (inclure Minitape.h)
Bibliothèque Tape.lib

Voir aussi

TapeClassPhysicalBlockToLogicalBlock