TapeClassLogicalBlockToPhysicalBlock, fonction (minitape.h)
La routine TapeClassLogicalBlockToPhysicalBlock traduit une adresse de bloc pseudological en une 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 pseudological.
[in] BlockLength
Spécifie la taille de 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 comporte 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 de retour
TapeClassLogicalBlockToPhysicalBlock 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 de bande. TapeClassLogicalBlockToPhysicalBlock n’est pas nécessaire pour les pilotes SCSI-2 ou ultérieur, car les appareils conformes à SCSI-2 ou version ultérieure prennent en charge l’adressage de bloc logique.
Pour positionner une bande à 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 la SeekBlockAddress, puis une commande SPACE pour avancer la bande SpaceBlockCount. La valeur SpaceBlockCount est nécessaire si les blocs pseudologicaux sur la bande sont plus petits que les blocs physiques ; dans ce cas, la limite de bloc logique 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. Elle retourne l’adresse de bloc logique dans SeekBlockAddress et retourne zéro dans SpaceBlockCount.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Bureau |
d’en-tête | minitape.h (include Minitape.h) |
bibliothèque | Tape.lib |